使用Scrapy解析网站时更改城市

时间:2016-10-16 12:34:19

标签: scrapy scrapy-spider

据我所知,Scrapy异步工作,请求无序。
现在,我可以解析某个网站页面上的项目列表,并查看详细信息以解析其他信息。
问题在完成所有这些工作后,我需要为另一个城市解析相同的数据。
城市通过提出http://www.example.com/city/set/1等请求进行更改。

我的蜘蛛看起来像这样:

class ExampleSpider(scrapy.Spider):
    name = "example"
    allowed_domains = ["example.com"]

    def start_requests(self):
        for category in CATEGORIES:
            if 'subcategories' in category:
                subcategories = category['subcategories']
                for subcategory in subcategories:
                    url = subcategory['url']
                    yield scrapy.Request(
                        url = url, 
                        callback = self.parse, 
                        meta = {
                            'category': category,
                            'subcategory': subcategory
                        }
                    )

    def parse(self, response):
        pass

这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以直接链接请求:

def parse(self, response):
    item = dict()
    # fill up item with data
    city_url = '' #make city url
    yield Request(city_url,
                  meta={'item': item},  # carry item to next callback in meta
                  callback=self.parse_city)

def parse_city(self, response):
    # get item from meta
    item = response.meta['item']
    # add more stuff to your item
    item['some_city_data'] = ''
    yield item