Scrapy框架中的Spider.Resquest 和 Response.follow 的区别

最近学习scrapy框架,感受到了scrapy的强大,可能自己还没有学透,感觉有时候数据保存没有那么方便,等技术成熟也许会使用更加灵活,废话不多说,进入今天的主题。

首先,为什么要使用Resquest和Response.follow
按照我的理解,使用scrapy框架和之前脚本爬虫最大的区别是,scrapy框架中你只需要写出爬虫的几个部分任务,整体的爬虫引擎已经实现,并且scrapy实现的异步爬虫,速度极快,而自己写脚本爬虫则需要写出全部过程。
更形象一点说,scrapy就像是一个专业的爬虫管家,你把你需要做的任务交给他,他会即快又好的完成。
我相信了解过的人都知道Spider.Resquest的作用,Response.follow也有同样的功能,不过多了一些小区别。

一、Response.follow可以使用相对地址
这是第一点不同,Resquest需要你提供完整的url才可以进行请求。

二、Response.follow可以使用选择器

for href in response.css('li.next a::attr(href)'):
    yield response.follow(href, callback=self.parse)

如果你不想使用url,可以使用css选择器,不过必须要使用其中包含url参数的选择器

三、Response.follow可以使用标签

for a in response.css('li.next a'):
    yield response.follow(a, callback=self.parse)

如果你连带url参数选择器都不想使用,可以直接使用带url的标签传递,response.follow会自动使用其中的url

经过上面的讲解,你是不是已经对两者的区别有一定了解,在合适的时候选择合适的方法,可以事半功倍!!

posted @ 2018-08-02 20:52  GF66  阅读(216)  评论(0编辑  收藏  举报