Libreria Yahoo BOSS Python, ExpatError
-
07-07-2019 - |
Domanda
Ho provato a installare il framework mashup di Yahoo BOSS, ma ho problemi a eseguire gli esempi forniti. Gli esempi 1, 2, 5 e 6 funzionano, ma 3 & amp; 4 danno errori di espatriato. Ecco l'output di ex3.py:
gpython examples/ex3.py
examples/ex3.py:33: Warning: 'as' will become a reserved keyword in Python 2.6
Traceback (most recent call last):
File "examples/ex3.py", line 27, in <module>
digg = db.select(name="dg", udf=titlef, url="http://digg.com/rss_search?search=google+android&area=dig&type=both§ion=news")
File "/usr/lib/python2.5/site-packages/yos/yql/db.py", line 214, in select
tb = create(name, data=data, url=url, keep_standards_prefix=keep_standards_prefix)
File "/usr/lib/python2.5/site-packages/yos/yql/db.py", line 201, in create
return WebTable(name, d=rest.load(url), keep_standards_prefix=keep_standards_prefix)
File "/usr/lib/python2.5/site-packages/yos/crawl/rest.py", line 38, in load
return xml2dict.fromstring(dl)
File "/usr/lib/python2.5/site-packages/yos/crawl/xml2dict.py", line 41, in fromstring
t = ET.fromstring(s)
File "/usr/lib/python2.5/xml/etree/ElementTree.py", line 963, in XML
parser.feed(text)
File "/usr/lib/python2.5/xml/etree/ElementTree.py", line 1245, in feed
self._parser.Parse(data, 0)
xml.parsers.expat.ExpatError: syntax error: line 1, column 0
Sembra che entrambi gli esempi non stiano funzionando durante il tentativo di interrogare Digg.com. Ecco la query costruita nel codice di ex3.py:
diggf = lambda r: {"title": r["title"]["value"], "diggs": int(r["diggCount"]["value"])}
digg = db.select(name="dg", udf=diggf, url="http://digg.com/rss_search?search=google+android&area=dig&type=both§ion=news")
Soluzione
Il problema è la stringa di ricerca digg. Dovrebbe essere " s = " ;. Non " search = "
Altri suggerimenti
Credo che debba essere un errore nell'esempio: sta ottenendo un risultato JSON (in effetti se copi e incolli quell'URL nel tuo browser, scaricherai un nome di file search.json che inizia con
{"results":[{"profile_image_url":
"http://a3.twimg.com/profile_images/255524395/KEN_OMALLEY_REVISED_normal.jpg",
"created_at":"Mon, 14 Sep 2009 14:52:07 +0000","from_user":"twilightlords",
vale a dire. JSON perfettamente normale; ma invece di analizzarlo con moduli come json o simplejson, tenta di analizzarlo come XML - e ovviamente questo tentativo fallisce.
Credo che la correzione (che probabilmente deve essere portata all'attenzione di chiunque mantenga quel codice per poterlo incorporare) sia chiedere XML invece dell'output JSON, O analizzare il JSON risultante con mezzi appropriati invece di cercando di vederlo come XML (non sono sicuro di come implementare al meglio entrambe le modifiche, poiché non ho familiarità con quel codice).