Scrapy shell获取301重定向到没有参数的URL

Raj*_*Raj 6 python redirect scrapy

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

scrapy shell "https://duckduckgo.com/?q=foo"
Run Code Online (Sandbox Code Playgroud)

但是对于某些网站,我的请求被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)
Run Code Online (Sandbox Code Playgroud)

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

任何人都可以建议我如何避免被重定向?

Lon*_*Rob 5

受到@paultrmbrth在评论中的回答的启发,这里正是使用User Agent欺骗解决此问题的方法。

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

我的是

Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0
Run Code Online (Sandbox Code Playgroud)

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

USER_AGENT = "whatever the user agent string was"
Run Code Online (Sandbox Code Playgroud)

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