采集网站内容(连接网站与解析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上,地址: