scrapy爬虫 函数间传值简易教程

2017-03-27

有的时候我们爬取数据的时候需要在多个页面之间跳转,爬取完所有页面的数据的时候才能把所有数据一起存到数据库,这个时候我们就需要把某个函数内爬取的数据传到下一个函数当中。
有人可能会说,为什么不用全局变量呢?这是因为scrapy自带多线程机制,好几个线程同时跑,用全局变量很不明智,除非顺序逻辑非常清楚的程序。
这个时候我们就要用到scrapy中Request方法的meta参数

 

def first(self, response)

  code = response.xpath('*****').extract()[0]

  yield FormRequest(url=url,meta={'code':code},formdata={},callback=self.next)

#meta和formdata属性一样,是一个字典,这里面我们把从网页中爬取到的code值放在meta中传入下一个函数

 

def next(self, response)

  code = response.meta["code"]

#在下一个函数当中我们就可以从response对象当中取得meta中的code值,这里就可以确保两个函数中code的值是完全一致的。

原文地址:https://www.cnblogs.com/zhangtianyuan/p/6829627.html