【问题标题】:Crawling redirected url in scrapy在scrapy中抓取重定向的url
【发布时间】:2012-06-18 09:56:45
【问题描述】:

我正在使用scrapy。

我正在获取一个包含 url 列表的站点。

所以我请求了start_url 中的主 url,并且我在一个列表中获得了所有 href 标签(获取数据的链接),我再次请求列表中的每个 url 进一步获取数据,但是一些 url重定向如下:

Redirecting (301) to <GET example.com/sch/mobile-68745.php> from Redirecting (301) to <GET example.com/sch/mobile-8974.php>

我知道scrapy会忽略重定向的链接,但我想捕捉重定向的url并想像200状态的url一样抓取

有没有办法捕获那个重定向 url 并从中抓取数据,我的意思是我们是否需要禁用重定向中间件?或者我们需要在请求命令中使用任何元标记,你能给我一个例子吗?

【问题讨论】:

  • >我知道scrapy会忽略重定向的链接,但我想捕捉重定向的url并想像200状态的url一样抓取相同的内容meta refresh 指令时,响应不会传递给回调,显示有关重定向的消息,使用相同的回调发出新的请求,但使用新的 url。所以重定向的 url 不会被忽略,除非它来自另一个域或已经访问过的 url *(被欺骗中间件过滤)

标签: python url redirect scrapy


【解决方案1】:

我没有使用 Scrapy 的经验,但显然,您可以定义 middlewares 来改变 Scrapy 在解析内容时的工作方式。

RedirectMiddleware 支持和处理开箱即用的重定向,因此您需要做的就是启用它。

DOWNLOADER_MIDDLEWARES = {
    'apy.contrib.downloadermiddleware.redirect.RedirectMiddleware': 123,
}

【讨论】:

  • 我认为默认是启用的
猜你喜欢
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 2017-10-16
  • 1970-01-01
  • 2015-11-11
  • 2022-12-07
  • 2015-03-15
  • 1970-01-01
相关资源
最近更新 更多