【问题标题】:how to capture redirected url in python如何在python中捕获重定向的url
【发布时间】:2013-03-11 23:11:15
【问题描述】:

我在我的网站上创建了一个页面http://shedez.com/test.html 这个页面将用户重定向到我服务器上的 jpg

我想使用 python 脚本将此图像复制到我的本地驱动器。我希望 python 脚本先转到主 url,然后再转到图片的目标 url

然后复制图像。到目前为止,目标网址是硬编码的,但将来它将是动态的,因为我将使用地理编码通过 ip 查找城市,然后将我的用户从他们的城市重定向到当天的图片。

== 我现在的脚本 ===

import  urllib2, os

req = urllib2.urlopen("http://shedez.com/test.html")

final_link = req.info()
print req.info()

def get_image(remote, local):   
    imgData = urllib2.urlopen(final_link).read()
    output = open(local,'wb')
    output.write(imgData)
    output.close()
    return local

fn = os.path.join(self.tmp, 'bells.jpg')
firstimg = get_image(final_link, fn)

【问题讨论】:

    标签: python


    【解决方案1】:

    您似乎正在使用 html http-equiv 重定向。要使用 Python 透明地处理重定向,请在服务器端使用 HTTP 302 响应标头。否则,您将不得不解析 HTML 并遵循重定向 manually 或使用类似 mechanize 的内容。

    【讨论】:

      【解决方案2】:

      这似乎不是标头重定向。这是网址的正文 -

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\n<html>\n<head>\n<title>Your Page Title</title>\n<meta http-equiv="REFRESH" content="0;url=htt
      p://2.bp.blogspot.com/-hF8PH92aYT0/TnBxwuDdcwI/AAAAAAAAHMo/71umGutZhBY/s1600/Professional%2BBusiness%2BCard%2BDesign%2B1.jpg"></HEAD>\n<BODY>\nOptional page t
      ext here.\n</BODY>\n</HTML>
      

      您可以使用urllibrequests 轻松获取内容,并使用BeautifulSouplxml 解析HTML,以从meta 标记中获取图像网址。

      【讨论】:

        【解决方案3】:

        正如答案所提到的:要么重定向到图像本身,要么从 html 中解析出 url。

        关于前者,重定向,如果您使用的是 nginx 或 HAproxy 服务器端,您可以将 X-Accel-Redirect 设置为图像的 uri,它会得到适当的服务。请参阅http://wiki.nginx.org/X-accel 了解更多信息。

        【讨论】:

          【解决方案4】:

          urllib2 urlopen 函数默认遵循重定向 3XX HTTP 状态码。但在您的情况下,您使用的是基于 html 标头的重定向,您将使用 Bibhas 提议的重定向。

          【讨论】:

            猜你喜欢
            • 2011-04-22
            • 2012-12-18
            • 1970-01-01
            • 2018-01-18
            • 1970-01-01
            • 2018-09-18
            • 1970-01-01
            • 1970-01-01
            • 2015-03-22
            相关资源
            最近更新 更多