Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: DrevenaOhrada 29. 04. 2014, 20:34:02
-
Zdravím,
učím se těď v Python 3 a už druhý den řeším jeden menší problém. Má se stáhnout stránka a json má přebrat obsah stránky. Bohužel vše skončí chybou TypeError: the JSON object must be str, not 'NoneType'. Poradil by někdo jak to dokončit?
Děkuji všem :)
import pymysql as mdb
import pycurl
import json
class Trida:
def getPage(self, url):
c = pycurl.Curl()
c.setopt(pycurl.URL, url)
c.setopt(pycurl.HTTPHEADER, ['Accept:'])
c.setopt(pycurl.SSL_VERIFYPEER, 0)
c.setopt(pycurl.FOLLOWLOCATION, 1)
return c.perform()
def getData(self):
getContent = self.getPage('https://www.web.cz/api')
array = json.loads(getContent)
print(array)
getTrida = Trida()
getTrida.getData()
-
Vsadil bych se, že funkce getPage vrátí None, protože funkce perform vrátí None. Já teda pycurl nepoužívám, takže je to jen takový rychlý odhad. Doporučuju místo pycurl použít requests.
-
Tiež nepoužívam, ale po rýchlom nazretí do dokumentácie bude IMHO ešte pomocou setopt potreba nastaviť, kam sa zapíše response po vykonaní perform - ten totiž nevracia response data - obdobne ako v example setopt (http://pycurl.sourceforge.net/doc/curlobject.html (http://pycurl.sourceforge.net/doc/curlobject.html)) takže asi:
import StringIO
def getPage(self, url):
c = pycurl.Curl()
c.setopt(pycurl.URL, url)
c.setopt(pycurl.HTTPHEADER, ['Accept:'])
c.setopt(pycurl.SSL_VERIFYPEER, 0)
response = StringIO.StringIO()
c.setopt(pycurl.WRITEFUNCTION, response.write)
c.setopt(pycurl.FOLLOWLOCATION, 1)
c.perform()
return response.getvalue()
-
Mockrát děkuji za nakopnutí, už to funguje. Mockrát děkuji :)