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

posted @ 2022-01-24 17:58  儿立之年  阅读(732)  评论(0)    收藏  举报