共计 1271 个字符,预计需要花费 4 分钟才能阅读完成。
在上一期,次要解说了:连贯网站与解析 HTML
上一期只是一个简略的例子,获取了网站的一小部分内容,本期开始解说须要获取网站的所有文章列表。
在开始以前,还是要揭示大家: 在网络爬虫的时候,你必须十分审慎地思考须要耗费多少网络流量,还要尽力思考能不能让采集指标的服务器负载更低一点。
本次示例采集 The ScrapingBee Blog 博客的文章。
在做数据采集以前,对网站经行剖析,看看代码构造。
须要采集的局部是一个个的小 card 组成,截图如下:
获取所有卡片的父标签之后,循环单个卡片的内容:
单个卡片的内容,就是咱们须要的内容,整顿完思路之后,开始实现代码:
首先咱们还是复用上一期网站连贯的代码:
def __init__(self):
self._target_url = 'https://www.scrapingbee.com/blog/'
self._init_connection = connection_util.ProcessConnection()
以上代码定义了一个被采集的网址,同时复用上一期的网站连贯代码。
# 连贯指标网站,获取内容
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]
如果存在内容,对网站内容的标签经行查找,以上是获取所有 card 的父标签,获取具体网站构造能够本人查看网站的残缺内容。
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,地址:https://github.com/sycct/Scra…
文章起源:爬虫辨认 – 爬虫系列:数据采集
正文完