一个豆瓣爬虫+社交分析


知识点

scrapy callback回调参数传递多个参数

在scrapy提交一个链接请求是用 Request(url,callback=func) 这种形式的,而parse只有一个response参数,如果自定义一个有多参数的parse可以考虑用meta实现参数传递


def parse(self, response):
        # collect `item_urls`
        for item_url in item_urls:
            yield Request(url=item_url, callback=self.parse_item)

def parse_item(self, response):
    item = MyItem()
    # populate `item` fields  收集处理一部分数据
    yield Request(url=item_details_url, meta={'item': item},
        callback=self.parse_details)

def parse_details(self, response):
    item = response.meta['item']
    # populate more `item` fields  再收集处理另外的数据
    return item

# 传递多个参数
yield Request(url, meta={'item': item, 'rdt': rdt, 'comments':cmt,'rewards':rewards,'total': total, 'curpage': cur}, callback=self.parse)