scrapy爬虫 用yield Request(response,循环获取网页出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scrapy爬虫 用yield Request(response,循环获取网页出错相关的知识,希望对你有一定的参考价值。

参考技术A 404错误,很明显,网址有问题。

Scrapy(爬虫框架)中,Spider类中parse()方法的工作机制

parse(self,response):当请求url返回网页没有指定回调函数,默认的Request对象的回调函数,用来处理网页返回的response,和生成的Item或者Request对象

以下分析一下parse()方法的工作机制:

1.因为使用的yield,而不是return,parse函数将会当做一个生成器使用,scrapy会注意调用parse方法中生成的结果,并且判断该结果是一个什么样的类型

2.如果是request则会加入爬取队列中,如果是item类型则会使用pipeline处理,其他类型则会返回错误信息

3.scrapy取到第一部分的request不会立马就去发送request,只是将这个request放到队列中,然后接着从生成器中获取

4.取完了第一部分的request,然后再获取第二部分的item,取到item了,就会放到对应的pipeline中处理

5.parse方法作为回调函数(callback),赋值给Request,指定parse()方法处理这些请求scrapy.Request(url,callback=self.parse)

6.Request对象经过调度,执行生成scrapy.http.response()响应对象,并送回parse()方法,直到调度器中没有Requset(递归的思路)

7.取尽之后,parse()工作结束,引擎再根据对列和pipeline中的内容去执行相应的操作

8.程序在取得各个页面的items前,会先处理完之前所有的request对列的请求,然后再提取items

以上是关于scrapy爬虫 用yield Request(response,循环获取网页出错的主要内容,如果未能解决你的问题,请参考以下文章

爬虫:Scrapy 中 yield 和 return 的区别

Scrapy(爬虫框架)中,Spider类中parse()方法的工作机制

scrapy.Request的旅行

scrapy使用yield返回Request的步骤是怎么样的

scrapy使用yield返回Request的步骤是怎么样的

基于python的scrapy爬虫,关于增量爬取是怎么处理的