0
点赞
收藏
分享

微信扫一扫

如何利用Scrapy爬虫框架抓取网页全部文章信息(下篇)


天长路远魂飞苦,梦魂不到关山难。

/前言/

   在上篇文章中,如何利用Scrapy爬虫框架抓取网页全部文章信息(中篇)、如何利用Scrapy爬虫框架抓取网页全部文章信息(上篇),我们已经解析了列表页中所有文章的URL并交给Scrapy进行下载,这篇文章我们将提取下一页的URL并交给Scrapy进行下载,具体教程如下。

/具体实现/

    1、首先在网页中先找到“下一页”的相关链接,如下图所示。与网页进行交互,找到“下一页”的URL。

如何利用Scrapy爬虫框架抓取网页全部文章信息(下篇)_python

    可以看到下一页的链接存在与a标签下的nextpage-numbers属性下面的href标签中,而且该属性是唯一的,可以很轻易的定位到该链接。

    2、可以在scrapyshell中进行调试,尔后再将满足条件的表达式写入到代码中去,如下图所示。

如何利用Scrapy爬虫框架抓取网页全部文章信息(下篇)_人工智能_02

 

    上图中两种方式都可以提取到目标信息。比较推荐的是第二种方式,其中.next.page-numbers代表的是同一个class下有两个属性,可以更快更准确的定位到标签,需要注意的是两个属性直接直接用点号进行连接,无任何的空格,初学者容易犯错。另外,extract_first("")这个函数在之前的文章中提及过,其默认值为空,如果没有匹配到目标信息的话,则返回None。

    3、取到了下一页的链接之后,需要对其做个判断,以防万一,具体的代码如下图所示。

如何利用Scrapy爬虫框架抓取网页全部文章信息(下篇)_html_03

    

    至此,我们已经提取了下一页的URL,并交给Scrapy进行下载。需要注意的是除了URL拼接部分之后,callback回调函数在这里是parse()函数,表示回调下一页的文章列表页,而不是文章详情页面,这点需要特别注意。

    4、接下来,我们就可以对整个爬虫进行调试了,在爬虫主体文件中设置好断点,如下图所示,之后在main.py文件中点击运行Debug,

如何利用Scrapy爬虫框架抓取网页全部文章信息(下篇)_python_04

    5、稍等片刻,等待调试的结果出来,如下图所示,结果鲜明。

如何利用Scrapy爬虫框架抓取网页全部文章信息(下篇)_html_05

    6、到这里,我们基本上已经完成所有文章的提取,简单的回顾一下整个爬取过程。首先我们在parse()函数中获取到文章的URL,尔后将其交给Scrapy去进行下载,下载完成之后,Scrapy再去调用parse_detail()函数去提取网页中的目标信息,这个页面提取完成之后,再进行下一个页面的信息提取,并将下一页的URL交给Scrapy去进行下载,再回调parse()函数以提取出下一页中文章列表的URL,如此往复的进行迭代,一直到最后一页为止,整个爬虫才会停止。

如何利用Scrapy爬虫框架抓取网页全部文章信息(下篇)_python_06

    7、利用Scrapy爬虫框架,我们便可以获取到整个网站的全部文章内容,中间的具体下载实现完全不用经过我们手动去进行,有木有感受到Scrapy爬虫的强大咧?

如何利用Scrapy爬虫框架抓取网页全部文章信息(下篇)_人工智能_07

    目前我们只是遍历了整个网站,知道了目标信息的提取方法,暂时还没有将目标数据保存到本地或者数据库当中去,后边的文章我们继续再约~~~

/小结/

    本文基于Scrapy爬虫框架,利用CSS选择器和Xpath选择器解析列表页中所有文章的URL,遍历整个网站进行数据采集,至此,我们已经可以实现全网文章的数据采集了。

 


举报

相关推荐

0 条评论