从python中的URL调用的方法中检索图像

时间:2016-08-18 00:09:42

标签: python python-2.7 urllib

我正在尝试使用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

2 个答案:

答案 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")
}