我正在尝试抓取重定向URL的网站,但是以编程方式尝试此操作会给我一个403错误代码(禁止访问)。我可以将URL放在浏览器中,浏览器也会正确地跟踪网址...
显示我想要去的一个简单示例: http://en.wikipedia.org/w/index.php?title=Mike_tyson
我已经尝试了urllib2和机械化,但两者都不起作用。我对网络编程相当新,并且想知道为了遵循重定向是否还需要做一些其他的技巧!
谢谢!
修改
好的,所以这真的搞砸了。我最初正在研究替代方法,因为我试图刮掉一个Mp3。我成功地下载了mp3,但它全部被破坏了。
事实证明,这与我在Windows或我当前的Python版本上下载它有某种关系。 我在我的Ubuntu发行版上测试了代码,下载的mp3文件非常好......
所以我只使用了简单的urllib2.openurl,它完美无缺!
我想知道为什么在Windows上下载会损坏mp3?
答案 0 :(得分:3)
尝试将mechanize
标记更改为不尊重robots.txt。另外,请考虑更改User-Agent HTTP标头:
>>> import mechanize
>>> br = mechanize.Browser()
>>> br.set_handle_robots(False)
>>> br.addheaders = [('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)')]
Web服务器现在将您视为运行MS Internet Explorer 6而非机器人。即使他们确实使用robots.txt限制你,你的机器人也会继续工作直到它被阻止。
>>> br.open('http://en.wikipedia.org/w/index.php?title=Mike_tyson')
<response_seek_wrapper at 0x... whose wrapped object = <closeable_response at 0x... whose fp = <socket._fileobject object at 0x...>>> #doctest: +ELLIPSIS
答案 1 :(得分:0)
好的,所以这真的搞砸了。我最初正在研究替代方法,因为我试图刮掉一个Mp3。我成功地下载了mp3,但它全部被破坏了。
事实证明,这与我在Windows或我当前的Python版本上下载它有某种关系。我在我的Ubuntu发行版上测试了代码,下载的mp3文件非常好......
所以我只使用了简单的urllib2.openurl,它完美无缺!
我想知道为什么在Windows上下载会损坏mp3?