打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

上有青冥之长天,下有渌水之波澜。

/前言/

   在上一篇文章中:如何利用Scrapy爬虫框架抓取网页全部文章信息(上篇),我们已经获取到了文章的详情页链接,但是提取到URL之后,如何将其交给Scrapy去进行下载呢?下载完成之后又如何去调用我们自己定义的解析函数呢?此时就需要用到Scrapy框架中的另外一个类Request具体教程如下。

/具体实现/

    1、这个Request存放的位置在scrapy.http下,如下图所示,可以直接导入即可。

    我们需要将这个Request对象交给Scrapy,尔后Scrapy爬虫框架就会帮助我们去进行下载了。

    2、Request对象里有初始化参数url以及回调函数callback,当然还有其他的参数,这里不铺开讲。我们将获取到的文章链接URL传给这个初始化参数url,之后就可以构建Request啦。在这里需要说明的是,这个Request是文章详情页的页面,而不是文章的列表页。对于文章详情页,那么接下来,我们需要对每篇文章的具体信息进行提取。

    3、基于之前文章的铺垫,提取网页的目标信息,可以将提取目标信息的表达式部分封装成一个函数parse_detail(),其作为一个callback回调函数,用于提取文章的具体字段。这里以CSS选择器为例,如下图所示。如果想以Xpath选择器进行提取的话也没有问题,具体实现可以参考历史文章中关于CSS和Xpath选择器用法的文章。具体的实现过程,在此暂不赘述。

    4、尔后将Request类完善一下,加入callback参数,记得在parse_detail前边加入self,表示在当前类当中的,不然的话就会报错的。此外,parse_detail虽然为函数,但是在此处务必不要加括号,这就是回调函数的特色。

    5、细心的小伙伴可能已经注意到上图中Request类中的url部分很复杂,加入了parse.urljoin()函数,其实这个也是个小技巧,这里简单说一下,希望对小伙伴们有帮助。parse.urljoin()函数的作用是将相对的地址组合成一个完整的url,有的时候网页标签中给我们呈现的并不是一个完整的URL链接或者完整的域名,而是省去了网页的域名,如果没有域名的话,默认的域名是当前网页的域名(即response.url),此时我们就需要进行URL的拼接,形成一个完整的URL地址,以方便正常访问。

    6、Request类初始化之后,如何将它交给Scrapy来进行下载呢?其实很简单,只需要在前面输入一个yield关键字即可,其作用是将Request里边的URL交给Scrapy去进行下载。

    至此,解析列表页中所有文章的URL并交给Scrapy进行下载的步骤已经完成,接下来我们需要完成的是如何提取下一页的URL并交给Scrapy进行下载。下一篇文章将着重解决这个问题,敬请期待~~~

/小结/

    本文基于Scrapy爬虫框架,利用CSS选择器和Xpath选择器解析列表页中所有文章的URL,并交给Scrapy进行下载,至此数据采集基本功能已经完成了。下一篇文章将完成如何提取下一页的URL并交给Scrapy进行下载,敬请期待。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
python抓取数据
Scrapy网络爬虫框架实际案例讲解,Python爬虫原来如此简单!
Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)
Python网络爬虫(七)——创造网络蜘蛛之Scrapy
网页爬虫
爬虫框架Scrapy(1)Scrapy基础1
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服