抓取网页数据( Python中解析网页爬虫的基本流程(一)-爬虫)

优采云 发布时间: 2021-09-22 13:24

  抓取网页数据(

Python中解析网页爬虫的基本流程(一)-爬虫)

  

  爬虫是Python的一个重要应用。使用PythonCrawler,我们可以轻松地从互联网上获取我们想要的数据。本文将在抓取和存储B站视频热点搜索列表数据的基础上,详细介绍Python爬虫的基本过程。如果您还处于介绍阶段或不知道爬虫的具体工作流程,请仔细阅读本文

  步骤1:尝试请求

  首先,进入B站主页,点击排名列表,复制链接

  现在启动Jupiter笔记本并运行以下代码

  请求

  url=“”

  res=requests.get('url')

  打印(res.status_代码)

  #二百

  在上面的代码中,我们完成了以下三件事

  您可以看到返回值是200,表示服务器响应正常,这意味着我们可以继续

  步骤2:解析页面

  在上一步中,通过请求从网站请求数据后,我们成功获得了一个收录服务器资源的响应对象。现在我们可以使用。文本以查看其内容

  

  您可以看到返回了一个字符串,其中收录我们需要的热列表视频数据,但是直接从字符串中提取内容既复杂又低效。因此,我们需要对其进行解析,并将字符串转换为网页结构化数据,这样我们就可以轻松地找到HTML标记及其属性和内容

  在Python中有许多解析网页的方法。您可以使用正则表达式、beautulsoup、pyquery或lxml。本文将基于beautulsoup进行解释

  Beauty soup是一个第三方库,可以从HTML或XML文件中提取数据。安装也很简单。您可以使用PIP安装BS4来安装它。让我们用一个简单的例子来说明它是如何工作的

  来自BS4导入Beautifulsoup

  page=请求.get(url)

  soup=BeautifulSoup(page.content,'html.parser')

  title=soup.title.text

  印刷品(标题)

  #热门视频-嘟嘟嘟嘟嘟嘟

  在上面的代码中,我们通过BS4中的Beauty soup类将上一步获得的HTML格式字符串转换为Beauty soup对象。请注意,使用解析器时需要开发解析器,这里使用的是html.parser

  然后您可以得到一个结构化元素及其属性。例如,可以使用soup.title.text获取页面标题。你也可以用汤。身体,汤。P、 等,以获得任何所需的元素

  步骤3:提取内容

  在以上两个步骤中,我们使用请求从web页面请求数据,并使用BS4解析页面。现在我们进入最关键的一步:如何从解析的页面中提取所需的内容

  在BeautifulSoup中,我们可以使用find/find_uuuAll来定位元素,但我更习惯于使用CSS选择器。选择是因为我可以访问DOM树,方法与使用CSS选择元素相同

  现在,让我们使用代码解释如何从解析的页面中提取站点B的热列表数据。首先,我们需要找到存储数据的标签,按列表页面上的F12键,然后根据下图中的说明找到它

  

  您可以看到每个视频消息都包装在Li标记下,因此代码可以这样编写

  所有产品=[]

  产品=汤。选择('li.rank item')

  对于产品中的产品:

  秩=产品。选择('div.num')[0]。文本

  名称=产品。选择(“>a”)[0]。text.strip

  play=product.select('span.data box')[0]。文本

  comment=product.select('span.data box')[1]。文本

  up=product.select('span.data box')[2]。文本

  url=product.select('>a')[0].attrs['href']

  所有产品。附加({

  “视频排名”:排名

  “视频名称”:名称

  “播放音量”:播放

  “拦河坝数量”:评论

  “向上大师”:向上

  “视频链接”:URL

  })

  在上面的代码中,我们首先使用soup。选择('li.Rank项')。此时,我们返回一个收录每个视频信息的列表,然后遍历每个视频信息,仍然使用CSS选择器提取所需的字段信息,并将其以字典的形式存储在开头定义的空列表中

  您可以注意到,我使用了多种选择方法来提取元素,这也是选择方法的灵活性。有兴趣的读者可以自己进一步研究

  步骤4:存储数据

  通过前三个步骤,我们使用requests+BS4成功地从网站提取了所需的数据。最后,我们只需将数据写入excel并保存即可

  如果您不熟悉熊猫,可以使用CSV模块编写。请注意,您应该设置encoding='utf-8-sig',否则中文代码将被乱码

  *敏*感*词*

  keys=所有产品[0]。keys

  Withopen('b站视频热列表TOP100.csv',w',换行符='',编码='utf-8-sig')A输出文件:

  dict_uwriter=csv.DictWriter(输出文件,键)

  主笔

  dict_uwriter.writerows(所有产品)

  如果您熟悉pandas,可以轻松地将字典转换为dataframe,只需一行代码即可完成

  importpandas aspd

  keys=所有产品[0]。keys

  pd.DataFrame(所有产品,列=键)。至CSV('b站视频热列表TOP100.csv',编码='utf-8-sig')

  

  总结

  到目前为止,我们已经成功地使用Python在本地存储了站点B的流行视频列表数据。大多数基于请求的爬虫程序基本上遵循上述四个步骤

  然而,尽管看起来很简单,但在真实场景中的每一步都不是那么容易。从数据的要求来看,目标网站有多种形式的反爬行和加密,还有很多需要在以后的数据分析、提取甚至存储中进一步探索和学习

  本文选择B站的视频热点列表正是因为它足够简单。我希望通过这个案例让您了解crawler的基本流程,最后附上完整的代码

  请求

  来自BS4导入Beautifulsoup

  *敏*感*词*

  importpandas aspd

  url=“”

  page=请求.get(url)

  soup=BeautifulSoup(page.content,'html.parser')

  所有\uo产品=[]

  产品=汤。选择('li.rank item')

  对于产品中的产品:

  秩=产品。选择('div.num')[0]。文本

  名称=产品。选择(“>a”)[0]。text.strip

  play=product.select('span.data box')[0]。文本

  comment=product.select('span.data box')[1]。文本

  up=product.select('span.data box')[2]。文本

  url=product.select('>a')[0].attrs['href']

  所有产品。附加({

  “视频排名”:排名

  “视频名称”:名称

  “播放音量”:播放

  “拦河坝数量”:评论

  “向上大师”:向上

  “视频链接”:URL

  })

  keys=所有产品[0]。keys

  Withopen('b站视频热列表TOP100.csv',w',换行符='',编码='utf-8-sig')A输出文件:

  dict_uwriter=csv.DictWriter(输出文件,键)

  主笔

  dict_uwriter.writerows(所有产品)

  ###使用pandas写入数据

  pd.DataFrame(所有产品,列=键)。至CSV('b站视频热列表TOP100.csv',编码='utf-8-sig')

  结束

  目前,Python和Java是编程语言武器列表中最流行的两种语言。两者都有各自的优势。Java更容易找到工作。Python被广泛使用,易于学习,可以做很多事情。许多学生都在学习这两方面的知识。所以小编给大家发了8本书,帮你们振作起来,打电话给大家

  Python:机器学习算法框架实践

  Java:Java编程方法

  感兴趣的合作伙伴可以扫描二维码下方的二维码以查看其角色~~

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线