我想在网站上使用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)
Run Code Online (Sandbox Code Playgroud)
**编辑**为了使问题更清楚,我希望能够抓取所有* .example.com->表示不获取 Filtered offsite request to 'foo.example.com'
**另一个编辑**按照@agstudy的回答,确保您不要忘记删除 allowed_domains = ["www.example.com"]
如果您没有使用规则,而是在使用allowed_domainsSpider 的class属性,则还可以设置allowed_domains = ['example.com']。这样将允许example.com诸如的所有子域foo.example.com。
allow_domains您可以为规则设置一个列表:
rules = (
Rule(SgmlLinkExtractor(allow_domains=('domain1','domain2' ), ),)
Run Code Online (Sandbox Code Playgroud)
例如:
rules = (
Rule(SgmlLinkExtractor(allow_domains=('example.com','example1.com' ), ),)
Run Code Online (Sandbox Code Playgroud)
这将过滤允许的网址,例如:
www.example.com/blaa/bla/
www.example1.com/blaa/bla/
www.something.example.com/blaa/bla/
Run Code Online (Sandbox Code Playgroud)