scrapy-redis
官方demo中只有默認的get請求, 可是咱們面對的網站多種多樣, 有時候起始url就是post請求, 或者業務須要在get請求中加入不少後期要用到的參數, 此時能夠重寫make_requests_from_url
方法來實現.python
如下我會舉例向<spider>:start_urls
中放入一個json格式任務讓爬蟲去抓取redis
# -*- coding: utf-8 -*- import json import scrapy from scrapy_redis.spiders import RedisSpider class MysiteSpider(RedisSpider): name = 'mysite' def make_requests_from_url(self, data: str): ''' data就是放入 mysite:start_urls 中的任務 :param data: :return: ''' req_data = json.loads(data) url = req_data['url'] # 此處也能夠改成post請求 return scrapy.Request( url, meta={'req_data': req_data} ) def parse(self, response): print(response.text) print(response.meta)
向隊列mysite:start_urls
放如下任務json
lpush mysite:start_urls '{"url": "http://httpbin.org/ip", "test_key": 123456}'
輸出結果以下, 能夠看到咱們在meta中的參數都在, 同時scrapy附加了其它的參數cookie
{'req_data': {'url': 'http://httpbin.org/ip', 'test_key': 123456}, 'download_timeout': 180.0, 'download_slot': 'httpbin.org', 'download_latency': 0.3165419101715088}
以上就是一個簡單的樣例, 咱們能夠利用該方法解決不少問題, 好比scrapy