Scrapy shell被301重定向到无参数的URL
Scrapy 是一个可以用来请求网址的工具,它可以通过 GET
参数来帮助我们查看网页的响应内容:
scrapy shell "https://duckduckgo.com/?q=foo"
不过,有些网站在我发出请求时,会出现 301
重定向的情况,这样网址的参数就被去掉了:
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
参数也会保留。
有没有人能建议我怎么避免被重定向呢?
1 个回答
5
受到@paultrmbrth在评论中回答的启发,这里有一个具体的方法来解决这个问题,使用的是用户代理伪装。
首先,你需要找到你浏览器的用户代理字符串(我使用了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"
就能正常工作了。