2016-08-08 31 views
0

Ich bin dran, den Inhalt eines API-Ergebnisses in Python zu bekommen.
Dies ist eine HTML-Vorlage mit einem Bild darin.Holen Sie sich den Inhalt HTML einer API

Ich habe viele Methoden versucht, um den Inhalt zu bekommen, aber es funktioniert nicht jedes Mal.

Das fuction:

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'] 

Als ich print html gibt viele unverständliche Zeichen ist.
Kann mir jemand helfen, dieses Problem zu lösen?

Vielen Dank.

+1

Die API gibt nicht html zurück, sondern eine rohe Bilddatei (standardmäßig png). – Cyrbil

Antwort

3

Die API gibt nicht html zurück, sondern eine rohe Bilddatei (standardmäßig png).

Sie müssen sehen, ob die status_code 200 war, und wenn ja, speichern Sie einfach das Ergebnis in eine Datei.

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)