构建新的请求实现翻页
关于spider源码
每一个request返回一个response,parse是response默认的回调函数,每一个response都有parse函数,但parse中返回的所有item都使用同一个管道对象
正式开始:
两种方法:1.拼接url,2.找到翻页连接
1.拼接url
baseurl 基础url
offset 偏移量
baseurl和offset拼接实现
表示所有符合一个或后一个的元素,如果是同一个父元素下的两个子元素用orparse函数中for循环结束后表示当前这一页的所有连接已经全部处理完,
令offset偏移,再拼接
1 yield scrapy.Request(url,callback = self.parse)
关键:产生新的request请求,返回的response对象仍然调用parse
yield和for中yield作用:
将对象传递给引擎,引擎判断是item,则交给管道处理,是request请求,则交给调度器,进入队列产生response
事实上,爬虫文件只能产生这两个对象。
对yield 的理解:
类似于return,但不会打断下面代码的执行,而是返回后继续执行当前代码,这里调用spider的就是引擎,所以返回给引擎了
eg.:for循环中对第一个node,yield item之后进管道,下一次进入这个函数时从这里继续执行?
最后一个 yield scrapy.Request(url,callback = self.parse) 这里response回调时怎么做?)
3个小时,因为编码,想死
1 self.f = open("myscrapy.json","w",encoding='utf-8')
写你吗比博客,就这吧
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。