【问题标题】:Python HTTP Redirect requests forbiddenPython HTTP 重定向请求被禁止
【发布时间】:2011-04-22 03:38:39
【问题描述】:

我正在尝试抓取 URL 被重定向的网站,但是以编程方式尝试这会给我一个 403 错误代码(禁止)。我可以将 URL 放在浏览器中,但浏览器会正确地跟随 url...

展示一个简单的例子,我试图去: http://en.wikipedia.org/w/index.php?title=Mike_tyson

我已经尝试了 urllib2 和 mechanize 但是两者都不起作用。我对网络编程还很陌生,想知道是否需要做一些其他技巧才能遵循重定向!

谢谢!

编辑

好的,所以这真是一团糟。我最初是在寻找替代方法,因为我试图抓取 Mp3。我设法成功下载了 mp3,但它都被破坏了。

原来它与我在 Windows 上下载它或我当前的 Python 版本有关。 我在我的 Ubuntu 发行版上测试了代码,mp3 文件下载得非常好......

所以我只使用了简单的 urllib2.openurl 并且效果很好!

我想知道为什么在 Windows 上下载会损坏 mp3?

【问题讨论】:

  • "我想知道为什么在 Windows 上下载会损坏 mp3?"呃,因为这是一个真正的操作系统的玩具般的借口?
  • 或者我忘了打开二进制模式:)

标签: python http redirect urllib2


【解决方案1】:

好的,所以这真是一团糟。我最初是在寻找替代方法,因为我试图抓取 Mp3。我设法成功下载了 mp3,但它都被破坏了。

原来它与我在 Windows 上下载它或我当前的 Python 版本有关。我在我的 Ubuntu 发行版上测试了代码,mp3 文件下载得非常好......

所以我只使用了简单的 urllib2.openurl 并且效果很好!

我想知道为什么在 Windows 上下载会损坏 mp3?

【讨论】:

    【解决方案2】:

    尝试将 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
    

    【讨论】:

    • 我正在抓取的网站甚至没有 robots.txt ;)
    猜你喜欢
    • 2021-01-05
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 2021-10-01
    • 1970-01-01
    相关资源
    最近更新 更多