[749]scrapy-redis实现start_requests功能
程序员文章站
2022-03-02 22:25:37
...
最近在用scrapy-redis
的RedisSpider
时,需要在起始请求中添加cookie
,发现RedisSpider
并不可直接使用start_requests
,需要手动实现。
分析可知RedisSpider
继承于RedisMixin
和Spider
类,执行逻辑是RedisMixin
的next_requests
函数接收到了redis中data后,通过make_request_from_data
函数来解码data生成url
,make_request_from_data
继续调用Spider类中的make_requests_from_url
函数生成Request,因此重写Spider中的make_requests_from_url
函数即可。
from scrapy.http import Request
from scrapy_redis.spiders import RedisSpider
class MySpider(RedisSpider):
...
def start_requests(self):
for url in self.start_urls:
yield self.make_requests_from_url(url)
def make_requests_from_url(self, url):
return Request(url, dont_filter=True,
cookies={}, meta={} #自定义...
)
def parse(self, response):
...
参考:http://www.it1352.com/728561.html
https://blog.csdn.net/weixin_42311577/article/details/83543050
下一篇: requests功能