scrapy允许所有子域名
我想用Scrapy来爬一个网站,这个网站的页面分布在很多子域名下。我知道我需要一个CrawlSpider
和一个Rule
,但是我希望这个规则能简单点,就是“允许所有子域名,让解析器根据数据自己处理”(意思是,在这个例子中,item_links在不同的子域名里)。
代码示例:
def parse_page(self, response):
sel = Selector(response)
item_links = sel.xpath("XXXXXXXXX").extract()
for item_link in item_links:
item_request = Request(url=item_link,
callback=self.parse_item)
yield item_request
def parse_item(self, response):
sel = Selector(response)
** 编辑 **
为了让问题更清楚,我想要能够爬取所有的*.example.com -> 这意味着不想收到Filtered offsite request to 'foo.example.com'
的提示。
** 另一个编辑 **
根据@agstudy的回答,确保不要忘记删除allowed_domains = ["www.example.com"]
这行代码。
2 个回答
5
如果你没有使用规则,而是使用了爬虫的 allowed_domains
类属性,你可以这样设置 allowed_domains = ['example.com']
。这样一来,所有 example.com
的子域名,比如 foo.example.com
,都可以被访问。
4
你可以为这个规则设置一个 allow_domains
列表:
rules = (
Rule(SgmlLinkExtractor(allow_domains=('domain1','domain2' ), ),)
比如说:
rules = (
Rule(SgmlLinkExtractor(allow_domains=('example.com','example1.com' ), ),)
这样就会过滤出允许的链接,比如:
www.example.com/blaa/bla/
www.example1.com/blaa/bla/
www.something.example.com/blaa/bla/