scrapy参数传递
scrapy参数传递有很多种类,可以方便爬虫数据流转
request请求传参数给callback
有时候在下一个即将请求的页面,某个参数不好获取,但是在当前环境已经获取到了,可以将该数据传入到解析函数callback中的meta字段中
yield scrapy.Request(url=url, callback=self.parseLink, meta={'cmd': cmd})
meta 参数是一个字典,该字段赋值给了callback中的response
def parseLink(self,response):
print(response.meta['cmd'])
全部demo代码如下
import cmd
from tkinter.messagebox import YES
import scrapy
class BaiduSpider(scrapy.Spider):
name = 'baidu'
allowed_domains = ['baike.baidu.com']
start_urls = ['https://baike.baidu.com/']
def parse(self, response):
scrapy.Request(url=response.url,
callback=self.parseLink, meta={'cmd': cmd})
def parseLink(self, response):
print(response.meta['cmd'])
命令行传自定义参数给spider
scrapy命令运行爬虫是scrapy crawl xxxSpider , 该命令也可以传入自定义参数,该参数会作为spider的属性,在整个爬虫的生命周期都是存在的。你可以接着这个渠道来命令爬虫做一些事情
scrapy crawl baidu -a attr1=baidu
代码接收如下
import scrapy
class BaiduSpider(scrapy.Spider):
name = 'baidu'
allowed_domains = ['baike.baidu.com']
start_urls = ['https://baike.baidu.com/']
def parse(self, response):
print(self.attr1)
成功输出 baidu

浙公网安备 33010602011771号