如何在python scrapy中对不同的start_urls应用不同的规则?

时间:2014-11-24 10:50:17

标签: python-2.7 scrapy

我有

start_urls = `[a.com,b.com,c.com,....]`

我想为链接提取器,允许,拒绝和b.com应用rule.com一些不同的规则,对于c.com我不想应用规则,只需抓取给定的URL。

我怎样才能做到这一点?

提前致谢..

1 个答案:

答案 0 :(得分:2)

您希望覆盖start_requests方法并将自定义方法与链接提取器一起使用:

def start_requests(self):
    yield Request('http://a.com', self.parse_a)
    yield Request('http://b.com', self.parse_b)
    yield Request('http://c.com', self.parse_data)

def parse_a(self, response):
    links = LinkExtractor(
        # ... extract links from http://a.com
    ).extract_links(response)
    return (Request(url=link.url, callback=self.parse_data) for link in links)

def parse_b(self, response):
    links = LinkExtractor(
        # ... extract links from http://b.com
    ).extract_links(response)
    return (Request(url=link.url, callback=self.parse_data) for link in links)