【问题标题】:Only allow internal links within scrapy只允许scrapy内的内部链接
【发布时间】:2011-12-06 23:29:33
【问题描述】:

我有一个我想抓取的 URL 列表 - 其中 3000 个。

我想在每个 url 上深入三层,但我不想去外部 url - 只在我的起始列表域内的链接。

我知道如果我只想用几个 url 来做到这一点,我会简单地填充 allowed_domains 列表。

但是,当您到达 3000 个网址时,allowed_domains 列表对于 Scrapy 来说太大而无法处理(据我所知,它会将其变成一个大的正则表达式)所以它会中断......

有什么想法吗?

“规则”列表中的某些内容会很好。 rules = (Rule(SgmlLinkExtractor(allow = (<local_links_only??>)) ,callback = 'parse_item'),)

或者非现场中间件中的某些东西 - 无论如何要获取引用链接?

还是批量处理?一次获得 50 个网址?是否有任何钩子可以允许这样的事情 - 我可以看到 start_requests - 但没有像 finish_requests 这样的回调可以用来再次填充 start_urls 列表?

男人

【问题讨论】:

  • 你的意思是这3000个url来自不同的网站?如果是这样,我认为您最好为每个蜘蛛设置单独的蜘蛛。

标签: python web-scraping scrapy


【解决方案1】:
  1. 使用DepthMiddleware 控制请求的深度。
  2. 使用allow_domains 避免使用外部网址。
  3. 调整 concurrent settings 以获得更好的性能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 2015-09-16
    • 1970-01-01
    • 2019-10-15
    相关资源
    最近更新 更多