获取API的内容HTML

时间:2016-08-08 08:45:37

标签: python scrapy urllib

我想在python中获取API结果的内容 这是一个带有图像的HTML模板。

我尝试了很多方法来获取内容,但每次都不起作用。

功能

def screenshotlayer(self, access_key, secret_keyword, domain, args):
    domain = "http://" + domain
    url = "http://api.screenshotlayer.com/api/capture?access_key=API_KEY&url=http://google.com&viewport=1440x900&width=250"
    html = urllib2.urlopen(url).read()
    print html
    soup = BeautifulSoup(html, 'html.parser')
    return soup.findAll('img')[0]['src']

当我print html时,有许多难以理解的角色 有人可以帮我解决这个问题吗?

非常感谢你。

1 个答案:

答案 0 :(得分:3)

api不返回html,而是返回原始图像文件(默认为png)。

您需要查看status_code是否为200,如果是,只需将结果保存到文件中。

import requests

res = requests.get(
    'http://api.screenshotlayer.com/api/capture',
    params={
        'access_key': 'API_KEY',
        'url': 'http://google.com&viewport=1440x900&width=250'
    }
)
if(res.status_code == 200)
    with open('output.png', 'w+b') as f:
        f.write(res.content.encode('utf8'))
else:
    print('Api returns error: %s' % res.content)