我正在尝试使用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)
我已将其用于其他网址(例如http://chart.finance.yahoo.com/z?s=CMIG4.SA&t=9m),但对于第一个网址,它不起作用。
有没有人知道如何为给定的网址制作此内容? 注意:我正在使用Python 2.7
答案 0 :(得分:2)
您需要使用可以使用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。
答案 1 :(得分:0)
虽然比@PadraicCunningham的反应更加冗长。这也应该可以解决问题。我遇到了类似的问题(主机只支持某些浏览器),所以我不得不开始使用urllib2而不仅仅是urllib。相当强大,是一个python附带的模块。
基本上,您在初始请求期间捕获所需的所有信息,并将其添加到下一个请求和后续请求中。请求模块似乎在幕后为您做了所有这些。如果这些年我只知道这一点......
{
"_id" : "GUL2jwhCvqZHO7Gqy8KCHod1qJmrl6j4",
"session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"_garbage\":\"2016-08-17T13:01:53.475Z\",\"guestPageViews\":1,\"flash\":{}}",
"expires" : ISODate("2016-08-31T13:01:57.642+0000")
},
{
"_id" : "C-4cuoyIGHgYM8hLGhQVOv3bRwChwkxq",
"session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"_garbage\":\"2016-08-17T13:02:44.000Z\",\"guestPageViews\":1,\"flash\":{}}",
"expires" : ISODate("2016-08-31T13:02:51.473+0000")
},
{
"_id" : "foE9ewU3eoJXIzkW97GSbMGNzFt2W4ww",
"session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"_garbage\":\"2016-08-17T13:04:35.294Z\",\"guestPageViews\":1,\"flash\":{}}",
"expires" : ISODate("2016-08-31T13:04:38.979+0000")
},
{
"_id" : "P8ugG4TFHJAuCzNS9aCMSybIS25uFtL1",
"session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"userId\":\"56cadedbc580346a1bd0ee0c\",\"_garbage\":\"2016-08-17T23:57:03.615Z\",\"flash\":{}}",
"expires" : ISODate("2016-08-31T23:57:05.203+0000")
}