需要解决的问题:scrapy框架yield和return

如果class下面发送请求时用的是return(return [scrapy.Request(url=url,headers=self.header,body=json.dumps(payload),method="POST",callback=self.parse)]),那么这个方法就不能调用类属性(self.  );如果发送请求是yield,那么就能用类属性(self.  )

报错信息是:AttributeError: 'Spider' object has no attribute 'mcht_id',

代码是

    def start_requests(self):
        print(self.mcht_id)
        """第一次请求一下登录页面,设置开启cookie使其得到cookie,设置回调函数"""
        return [Request('http://www.jingpiwang.com', meta={'cookiejar': 1}, callback=self.next1)]

  如果这里改成这样就行了:

    def start_requests(self):
        print(self.mcht_id)
        """第一次请求一下登录页面,设置开启cookie使其得到cookie,设置回调函数"""
        yield Request('http://www.jingpiwang.com', meta={'cookiejar': 1}, callback=self.next1)

  

原文地址:https://www.cnblogs.com/qiaoer1993/p/10808358.html