使用Scrapy浏览和收集数据,但我发现蜘蛛正在抓取大量不需要的网页。我更喜欢蜘蛛要做的只是从一组定义的页面开始,然后在这些页面上解析内容然后完成。我试图实现类似下面的规则,但它仍然在抓取一系列其他页面。关于如何处理这个的任何建议?
rules = (
Rule(SgmlLinkExtractor(), callback='parse_adlinks', follow=False),
)
谢谢!
答案 0 :(得分:1)
您的提取器正在提取每个链接,因为它没有设置任何规则参数。
如果您查看official documentation,您会注意到scrapy LinkExtractors有很多参数可以设置,以自定义您的linkextractors提取的内容。
示例:
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 ^