我想使用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"]
3条答案
按热度按时间62o28rlo1#
如果您不使用规则,而是使用Spider的
allowed_domains
class属性,您也可以设置allowed_domains = ['example.com']
,这将允许example.com
的所有子域,例如foo.example.com
。xxls0lw82#
您可以为规则设置
allow_domains
列表:例如:
这将过滤允许的URL,如:
jjhzyzn03#
要使用Scrapy爬网网站并允许所有子域,您可以使用CrawlSpider,其规则不包括RestrictedDomain约束。以下是如何执行此操作的示例: