Yahoo BOSS Python Library, ExpatError
-
07-07-2019 - |
Pregunta
Intenté instalar el marco de mashup de Yahoo BOSS, pero tengo problemas para ejecutar los ejemplos proporcionados. Los ejemplos 1, 2, 5 y 6 funcionan, pero 3 & amp; 4 dan errores de Expat. Aquí está la salida de 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
Parece que ambos ejemplos están fallando al intentar consultar Digg.com. Aquí está la consulta que se construye en el código de 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")
Solución
El problema es la cadena de búsqueda digg. Debería ser " s = " ;. No " search = "
Otros consejos
Creo que debe ser un error en el ejemplo: está obteniendo un resultado JSON (de hecho, si copia y pega esa URL en su navegador, descargará un archivo con los nombres search.json que comienza 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",
es decir JSON perfectamente normal; pero luego, en lugar de analizarlo con módulos como json o simplejson, intenta analizarlo como XML, y obviamente este intento falla.
Creo que la solución (que probablemente deba señalarse a la persona que mantiene ese código para que puedan incorporarlo) es pedir XML en lugar de la salida JSON, o analizar el JSON resultante con los medios apropiados en lugar de tratando de verlo como XML (no estoy seguro de cómo implementar mejor cualquier cambio, ya que no estoy familiarizado con ese código).