Scrapy - 仅限定目标URL

时间:2016-08-08 08:45:25

标签: scrapy rules

使用Scrapy浏览和收集数据,但我发现蜘蛛正在抓取大量不需要的网页。我更喜欢蜘蛛要做的只是从一组定义的页面开始,然后在这些页面上解析内容然后完成。我试图实现类似下面的规则,但它仍然在抓取一系列其他页面。关于如何处理这个的任何建议?

rules = (
    Rule(SgmlLinkExtractor(), callback='parse_adlinks', follow=False),  
)

谢谢!

1 个答案:

答案 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 ^