如何在python中捕获重定向url

2024-09-29 01:34:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的站点上创建了一个页面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)

Tags: 用户test脚本comhttpoutputlocalhtml
3条回答

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

它似乎不是头重定向。这是url的正文-

<!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标记获取图像url。在

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

关于前者,重定向,如果您使用nginx或HAproxy服务器端,您可以将X-Accel-Redirect设置为映像的uri,它将得到适当的服务。有关详细信息,请参见http://wiki.nginx.org/X-accel。在

相关问题 更多 >