构建新的请求实现翻页

关于spider源码

每一个request返回一个response,parse是response默认的回调函数,每一个response都有parse函数,但parse中返回的所有item都使用同一个管道对象

 

 

正式开始:

两种方法:1.拼接url,2.找到翻页连接

1.拼接url

baseurl 基础url

offset 偏移量

baseurl和offset拼接实现

表示所有符合一个或后一个的元素,如果是同一个父元素下的两个子元素用or

parse函数中for循环结束后表示当前这一页的所有连接已经全部处理完,

令offset偏移,再拼接

1 yield scrapy.Request(url,callback = self.parse)

关键:产生新的request请求,返回的response对象仍然调用parse

yield和for中yield作用:

将对象传递给引擎,引擎判断是item,则交给管道处理,是request请求,则交给调度器,进入队列产生response

事实上,爬虫文件只能产生这两个对象。

对yield 的理解:

类似于return,但不会打断下面代码的执行,而是返回后继续执行当前代码,这里调用spider的就是引擎,所以返回给引擎了

(ps:yield 下次调用时会在这个位置继续执行?

  eg.:for循环中对第一个node,yield item之后进管道,下一次进入这个函数时从这里继续执行?

    最后一个  yield scrapy.Request(url,callback = self.parse) 这里response回调时怎么做?)

3个小时,因为编码,想死

1 self.f = open("myscrapy.json","w",encoding='utf-8')

写你吗比博客,就这吧