采集网站内容(连接网站与解析HTML上一期的代码结构分析(一))

优采云 发布时间: 2021-10-23 10:07

  采集网站内容(连接网站与解析HTML上一期的代码结构分析(一))

  上一期主要讲解:链接网站和解析HTML

  最后一个问题只是一个简单的例子。我得到了网站的一小部分内容。这个问题开始说明需要获取网站的所有文章的列表。

  在开始之前,还是要提醒大家:网络爬虫的时候一定要非常仔细的考虑需要消耗多少网络流量,尽量考虑采集目标的服务器负载是否可以更低。

  此示例 采集ScrapingBee 博客博客 文章。

  在做数据采集之前,先对网站进行分析,看看代码结构。

  需要采集的部分由一张一张的小卡片组成,截图如下:

  多卡

  获取所有卡片的父标签后,循环单张卡片的内容:

  一件物品卡

  单张卡片的内容正是我们所需要的。完成思路后,开始完成代码:

  首先,我们将重用上一期网站的代码:

  def __init__(self):

   self._target_url = 'https://www.scrapingbee.com/blog/'

   self._init_connection = connection_util.ProcessConnection()

  以上代码定义了一个采集的URL,并复用了上一期网站的链接代码。

   # 连接目标网站,获取内容

   get_content = self._init_connection.init_connection(self._target_url)

  连接上面定义的目标网站,获取网站的内容。

   if get_content:

   parent = get_content.findAll("section", {"class": "section-sm"})[0]

   get_row = parent.findAll("div", {"class": "col-lg-12 mb-5 mb-lg-0"})[0]

  如果有内容,搜索网站的内容标签。以上就是获取所有卡片的父标签。具体的网站结构体可以自行查看网站的完整内容。

   get_child_item = get_row.findAll("div", {"class": "col-md-4 mb-4"})

  得到所有的小卡片。

   for item in get_child_item:

   # 获取标题文字

   get_title = item.find("a", {"class": "h5 d-block mb-3 post-title"}).get_text()

   # 获取发布时间

   get_release_date = item.find("div", {"class": "mb-3 mt-2"}).findAll("span")[1].get_text()

   # 获取文章描述

   get_description = item.find("p", {"class": "card-text post-description"}).get_text()

  之后,遍历获得的小卡片,获取每张卡片的标题、发布时间和描述文章。

  以上分析从网站的结构开始,到具体的代码实现。这是爬虫提取网站内容的一个基本思路。

  每个网站都不一样,结构也会不一样,所以一定要针对性的写代码。

  以上代码已托管在Github上,地址:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线