【问题标题】:Only Allow Internal Links in Broad Scrapy Web Crawl仅允许广泛的 Scrapy Web 爬网中的内部链接
【发布时间】:2014-04-08 16:50:42
【问题描述】:

我正在使用 Scrapy 抓取数千个网站。我有大量要抓取的域。一切正常,只是爬虫也跟随外部链接,这就是为什么它爬取的域太多了。我已经尝试在 SGMLlinkextractor 中使用“allow_domains”,但是当我向它解析大量域列表时,这不起作用。

所以我的问题是:如何限制对内部链接的广泛抓取?

任何想法都非常感谢。

更新:问题是由一个allow_domains列表引起的,该列表太大而无法处理scrapy

【问题讨论】:

    标签: python url web-scraping filtering scrapy


    【解决方案1】:

    OffsiteMiddleware 是您应该考虑使用的:

    class scrapy.contrib.spidermiddleware.offsite.OffsiteMiddleware

    过滤掉对所覆盖域之外的 URL 的请求 蜘蛛。

    这个中间件过滤掉所有主机名不在的请求 蜘蛛的 allowed_domains 属性。

    【讨论】:

    • 这并没有解决问题。问题是由一个 allow_domains 列表引起的,该列表太大,scrapy 无法处理
    【解决方案2】:

    我可以通过修改 SGMLlinkextractor 来解决这个问题。我在返回链接之前添加了这两行:

    domain = response.url.replace("http://","").replace("https://","").split("/")[0]
    links = [k for k in links if domain in k.url]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多