从 URL 在 python 中调用的方法中检索图像
Retrieve image from method called by URL in python
我正在尝试使用 python 检索通过给定 URL 返回的图像,例如这张:
http://fundamentus.com.br/graficos3.php?codcvm=2453&tipo=108
我正在尝试使用 urllib 检索方法来执行此操作:
import urllib
urlStr = "http://fundamentus.com.br/graficos3.php?codcvm=2453&tipo=108"
filename = "image.png"
urllib.urlretrieve(urlStr,filename)
我已经将此用于其他 URL(例如 http://chart.finance.yahoo.com/z?s=CMIG4.SA&t=9m),但对于第一个它不起作用。
有人知道如何为给定的 URL 制作这个吗?
注意:我使用的是 Python 2.7
您需要使用可以通过 requests:
进行的会话
import requests
with requests.Session() as s:
s.get("http://fundamentus.com.br/graficos.php?papel=CMIG4&tipo=2")
with open("out.png", "wb") as f:
f.write(s.get("http://fundamentus.com.br/graficos3.php?codcvm=2453&tipo=108").content)
它在您的浏览器中工作,因为您访问了图像所在的初始页面,因此设置了任何必要的 cookie。
虽然比@PadraicCunningham 的回复更冗长。这也应该可以解决问题。我 运行 遇到了类似的问题(主机只支持某些浏览器),所以我不得不开始使用 urllib2 而不是仅仅使用 urllib。非常强大,是 python.
附带的模块
基本上,您在初始请求期间捕获所有需要的信息,并将其添加到您的下一个请求和后续请求中。 requests 模块似乎在幕后为您完成了所有这些工作。要是这些年我早知道就好了...
import urllib2
urlForCookie = 'http://fundamentus.com.br/graficos.php?papel=CMIG4&tipo=2'
urlForImage = 'http://fundamentus.com.br/graficos3.php?codcvm=2453&tipo=108'
initialRequest = urllib2.Request(urlForCookie)
siteCookie = urllib2.urlopen(req1).headers.get('Set-Cookie')
imageReq = urllib2.Request(urlForImage)
imageReq.add_header('cookie', siteCookie)
with open("image2.pny",'w') as f:
f.write(urllib2.urlopen(req2).read())
f.close()
我正在尝试使用 python 检索通过给定 URL 返回的图像,例如这张:
http://fundamentus.com.br/graficos3.php?codcvm=2453&tipo=108
我正在尝试使用 urllib 检索方法来执行此操作:
import urllib
urlStr = "http://fundamentus.com.br/graficos3.php?codcvm=2453&tipo=108"
filename = "image.png"
urllib.urlretrieve(urlStr,filename)
我已经将此用于其他 URL(例如 http://chart.finance.yahoo.com/z?s=CMIG4.SA&t=9m),但对于第一个它不起作用。
有人知道如何为给定的 URL 制作这个吗? 注意:我使用的是 Python 2.7
您需要使用可以通过 requests:
进行的会话import requests
with requests.Session() as s:
s.get("http://fundamentus.com.br/graficos.php?papel=CMIG4&tipo=2")
with open("out.png", "wb") as f:
f.write(s.get("http://fundamentus.com.br/graficos3.php?codcvm=2453&tipo=108").content)
它在您的浏览器中工作,因为您访问了图像所在的初始页面,因此设置了任何必要的 cookie。
虽然比@PadraicCunningham 的回复更冗长。这也应该可以解决问题。我 运行 遇到了类似的问题(主机只支持某些浏览器),所以我不得不开始使用 urllib2 而不是仅仅使用 urllib。非常强大,是 python.
附带的模块基本上,您在初始请求期间捕获所有需要的信息,并将其添加到您的下一个请求和后续请求中。 requests 模块似乎在幕后为您完成了所有这些工作。要是这些年我早知道就好了...
import urllib2
urlForCookie = 'http://fundamentus.com.br/graficos.php?papel=CMIG4&tipo=2'
urlForImage = 'http://fundamentus.com.br/graficos3.php?codcvm=2453&tipo=108'
initialRequest = urllib2.Request(urlForCookie)
siteCookie = urllib2.urlopen(req1).headers.get('Set-Cookie')
imageReq = urllib2.Request(urlForImage)
imageReq.add_header('cookie', siteCookie)
with open("image2.pny",'w') as f:
f.write(urllib2.urlopen(req2).read())
f.close()