抓取网页新闻( Python中解析网页的基本流程和使用方法(上))

优采云 发布时间: 2022-01-14 04:19

  抓取网页新闻(

Python中解析网页的基本流程和使用方法(上))

  

  爬虫是 Python 的一个重要应用。使用Python爬虫,我们可以很方便的从网上抓取我们想要的数据

  本文将以爬取并存储B站视频热搜榜数据为例,详细介绍Python爬虫的基本流程。

  如果你还处于爬取的入门阶段或者不知道爬取的具体工作流程,那么你应该仔细阅读这篇文章!

  第 1 步:尝试请求

  先进入b站首页,点击排行榜,复制链接

  现在开始,并运行以下代码

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

  *敏*感*词*

  使用方法构造请求

  使用获取网页状态码

  可以看到返回值为 ,表示服务器响应正常,表示我们可以继续

  第 2 步:解析页面

  在上一步中,我们通过requests向网站请求数据后,成功得到了一个收录服务器资源的Response对象,现在我们可以使用它来查看它的内容了

  

  可以看到返回的是一个字符串,里面收录了我们需要的热榜视频数据,但是直接从字符串中提取内容复杂且效率低,所以我们需要对其进行解析,将字符串转换成网页结构数据,即使查找 HTML 标记及其属性和内容变得容易。

  Python解析网页的方式有很多种,可以用,也可以用,或者,本文将基于BeautifulSoup进行讲解

  Beautiful Soup 是一个第三方库,可以从 HTML 或 XML 文件中提取数据

  安装也很简单,使用安装即可

  让我们用一个简单的例子来说明它是如何工作的

  在上面的代码中,我们通过bs4中的BeautifulSoup类将上一步得到的html格式字符串转换成BeautifulSoup对象。请注意,使用时需要指定解析器。这里我们使用

  然后就可以获取其中一个结构元素及其属性,比如用 获取页面标题,也可以使用 等获取任何需要的元素

  第三步:提取内容

  上面两步中,我们使用requests向网页请求数据,使用bs4解析页面。现在我们来到最关键的一步:如何从解析后的页面中提取出需要的内容。

  在 Beautiful Soup 中,我们可以使用来定位元素,但我更习惯使用 CSS 选择器,因为可以像使用 CSS 选择元素一样沿着 DOM 树向下移动

  现在我们用代码来说明如何从解析后的页面中提取B站热榜的数据。首先,我们需要找到存储数据的标签,在列表页按F12按照下面的说明找到

  

  可以看到每个视频信息都包裹在li标签下,那么代码可以这样写

  在上面的代码中,我们先使用它,然后返回一个收录每个视频信息的列表,然后遍历每个视频信息,仍然使用 CSS 选择器来提取我们想要的字段信息,并在开头以字典的形式存储定义好的空列表

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

  第 4 步:存储数据

  通过前三步,我们成功使用requests+bs4从网站中提取出需要的数据,最后只需要将数据写入Excel并保存即可。

  如果对pandas不熟悉,可以使用模块来写,需要注意设置编码,否则会出现中文乱码问题

  如果您熟悉 pandas,您可以通过一行代码轻松地将字典转换为 DataFrame

  

  概括

  至此,我们已经成功使用Python将b站热门视频列表的数据存储在本地。大多数基于请求的爬虫基本上都遵循以上四个步骤。

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

  本文选择B站视频热榜,正是因为够简单。希望通过这个案例大家可以了解爬虫的基本流程,最后附上完整代码

  -结尾-

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线