如何在Python中捕获重定向的URL
我在我的网站上创建了一个页面,地址是 http://shedez.com/test.html。这个页面会把用户重定向到我服务器上的一张jpg图片。
我想用一个Python脚本把这张图片复制到我的本地电脑上。我希望这个脚本先访问主网址,然后再获取图片的目标网址。
接着再复制这张图片。目前目标网址是写死在代码里的,但将来我会让它变得动态,因为我会使用地理编码来通过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)
4 个回答
0
正如回答中提到的:你可以选择直接跳转到图片本身,或者从网页的代码中提取出图片的链接。
关于前者,也就是跳转,如果你在服务器上使用的是nginx或HAproxy,可以设置一个叫做 X-Accel-Redirect
的东西,把它指向图片的地址,这样就可以正确地提供图片了。想了解更多信息,可以查看这个链接:http://wiki.nginx.org/X-accel。
3
这看起来不是头部重定向。这是网址的主体内容 -
<!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>
你可以很简单地用 urllib
或 requests
来获取内容,然后用 BeautifulSoup
或 lxml
来解析HTML,从 meta
标签中提取图片网址。