【问题标题】:Scrapy shell gets 301 redirected to URL without parametersScrapy shell 得到 301 重定向到没有参数的 URL
【发布时间】:2014-07-29 23:13:12
【问题描述】:

Scrapy 可以请求带有GET 参数的 URL 以交互探索响应:

scrapy shell "https://duckduckgo.com/?q=foo"

但是对于某些网站,我的请求会被 301 重定向并且 URL 参数被剥离:

DEBUG: Redirecting (301) to <GET http://foo.com/mypage/> 
  from <GET http://foo.com/mypage/?bar=baz>
DEBUG: Crawled (200) <GET http://foo.com/mypage/> (referer: None)

当我在浏览器中正常访问http://foo.com/mypage/?bar=baz 时,我不会被重定向,GET 参数仍然存在。

谁能建议我如何避免被重定向?

【问题讨论】:

  • 发布你得到的整个代码和错误。
  • 嘿,我已经发布了整个代码和输出消息。
  • @user2019135 ,尝试使用浏览器的用户代理字符串,例如USER_AGENT setting
  • @paultrmbrth 我遇到了这个确切的问题,您的解决方案解决了这个问题。请张贴作为答案,我会投票。

标签: python redirect scrapy


【解决方案1】:

受@paultrmbrth 在 cmets 中的回答的启发,下面是使用User Agent spoofing 解决此问题的确切方法。

首先,找到您浏览器的用户代理字符串(我使用http://www.whatsmyuseragent.com/ 完成此操作,但可能还有其他方法)。

我的是

Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0

现在在project_name/items.py 中添加以下行:

USER_AGENT = "whatever the user agent string was"

scrapy shell "http://foo.com/mypage/?bar=baz" 将按预期工作。

【讨论】:

    猜你喜欢
    • 2020-06-22
    • 2016-05-21
    • 2021-12-28
    • 2018-12-21
    • 2012-10-19
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 2016-05-11
    相关资源
    最近更新 更多