我在我的网站上创建了一个页面http://shedez.com/test.html此页面将用户重定向到我服务器上的jpg
我想使用python脚本将此图像复制到本地驱动器。我希望python脚本首先转到主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)
答案 0 :(得分: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
代码中的图片网址
答案 1 :(得分:1)
您好像正在使用html http-equiv
重定向。要透明地使用Python处理重定向,请在服务器端使用HTTP 302响应标头。否则,您必须解析HTML并遵循重定向manually或使用类似mechanize的内容。
答案 2 :(得分:0)
正如答案所述:要么重定向到图像本身,要么从html中解析出网址。
关于前者,重定向,如果你正在使用nginx或HAproxy服务器端,你可以将X-Accel-Redirect
设置为图像的uri,它将被适当地提供。有关详细信息,请参阅http://wiki.nginx.org/X-accel。
答案 3 :(得分:0)
urllib2 urlopen函数默认遵循重定向3XX HTTP状态代码。但在你的情况下,你正在使用基于html标题的重定向,你将使用它来使用Bibhas提出的建议。