Scrapy - 仅针对指定的 URL
Scrapy - target specified URLs only
我正在使用 Scrapy 浏览和收集数据,但发现蜘蛛正在抓取大量不需要的页面。我希望蜘蛛程序做的只是从一组定义的页面开始,然后解析这些页面上的内容,然后完成。我已尝试实施如下规则,但它仍在抓取一系列其他页面。关于如何解决这个问题有什么建议吗?
rules = (
Rule(SgmlLinkExtractor(), callback='parse_adlinks', follow=False),
)
谢谢!
您的提取器正在提取每个 link,因为它没有设置任何规则参数。
如果您看一下 official documentation,您会发现 scrapy LinkExtractors 有很多参数,您可以设置这些参数来自定义 linkextractor 提取的内容。
示例:
rules = (
# only specific domain links
Rule(LxmlLinkExtractor(allow_domains=['scrapy.org', 'blog.scrapy.org']), <..>),
# only links that match specific regex
Rule(LxmlLinkExtractor(allow='.+?/page\d+.html)', <..>),
# don't crawl speicific file extensions
Rule(LxmlLinkExtractor(deny_extensions=['.pdf','.html'], <..>),
)
如果您不希望蜘蛛在某处好奇,您还可以为您的蜘蛛设置允许的域:
class MySpider(scrapy.Spider):
allowed_domains = ['scrapy.org']
# will only crawl pages from this domain ^
我正在使用 Scrapy 浏览和收集数据,但发现蜘蛛正在抓取大量不需要的页面。我希望蜘蛛程序做的只是从一组定义的页面开始,然后解析这些页面上的内容,然后完成。我已尝试实施如下规则,但它仍在抓取一系列其他页面。关于如何解决这个问题有什么建议吗?
rules = (
Rule(SgmlLinkExtractor(), callback='parse_adlinks', follow=False),
)
谢谢!
您的提取器正在提取每个 link,因为它没有设置任何规则参数。
如果您看一下 official documentation,您会发现 scrapy LinkExtractors 有很多参数,您可以设置这些参数来自定义 linkextractor 提取的内容。
示例:
rules = (
# only specific domain links
Rule(LxmlLinkExtractor(allow_domains=['scrapy.org', 'blog.scrapy.org']), <..>),
# only links that match specific regex
Rule(LxmlLinkExtractor(allow='.+?/page\d+.html)', <..>),
# don't crawl speicific file extensions
Rule(LxmlLinkExtractor(deny_extensions=['.pdf','.html'], <..>),
)
如果您不希望蜘蛛在某处好奇,您还可以为您的蜘蛛设置允许的域:
class MySpider(scrapy.Spider):
allowed_domains = ['scrapy.org']
# will only crawl pages from this domain ^