【问题标题】:Scrapy ignore canonical urlScrapy忽略规范网址
【发布时间】:2015-09-20 07:26:13
【问题描述】:

是否可以让 scrapy 将其内容中包含“rel="canonical"”的页面重定向到规范 url(如果页面本身不是规范的)?

【问题讨论】:

  • 请您显示无法运行的特定代码。
  • 我没有编码。如果可以的话,我不知道该怎么做。
  • 但这里是这样。我认为你应该先用谷歌搜索你的问题,然后尝试你找到的解决方案。如果您遇到错误,那么您可以在这里提问。我以为你认识他们。
  • 我问这个问题是因为,当我应该 GG 时,我没有找到解决方案。可能是,我在scrapy-users - Google Groups 上问这个问题

标签: python web-crawler scrapy


【解决方案1】:

我不知道有任何内置设置,但您可以轻松读取meta rel=canonical 标签的值,如果它与当前网址不同,则可以轻松读取response.follow() 网址。

如果有的话,请注意查询参数(以及旧网站上的奇怪 hashbang)。当需要仔细检查您是否不打算follow() 相同的网址时,您可能需要使用此功能:

https://w3lib.readthedocs.io/en/latest/w3lib.html#w3lib.url.canonicalize_url

这个中间件也可能有用:

https://gist.github.com/bcambel/4365237

【讨论】: