2009-09-14 6 views
0

J'ai essayé d'installer le framework mashup Yahoo BOSS, mais j'ai du mal à exécuter les exemples fournis. Les exemples 1, 2, 5 et 6 fonctionnent, mais 3 & 4 donnent des erreurs Expat. Voici la sortie de ex3.py:Yahoo BOSS Bibliothèque Python, ExpatError

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&section=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 

On dirait que les deux exemples ne parviennent pas en essayant d'interroger Digg.com. Voici la requête qui est construit dans le code 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&section=news") 
+0

Vous n'avez pas de problème avec le fichier XML du flux. Regardez la ligne: xml.parsers.expat.ExpatError: balise non concordante: ligne 10, colonne 2 du flux XML. – mandel

Répondre

1

Le problème est la chaîne de recherche digg. Cela devrait être "s =". Non "search ="

0

Je crois qu'il doit y avoir une erreur dans l'exemple: il est d'obtenir un résultat JSON (en effet, si vous copiez et collez cette URL dans votre navigateur, vous « ll télécharger un nom de fichier search.json qui commence par

{"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", 

-à-dire JSON parfaitement normal, mais au lieu de l'analyser avec des modules tels que JSON ou simplejson, il essaie d'analyser comme XML - et, évidemment, ce tentative échoue

Je crois que le correctif (qui probablement ds être porté à l'attention de celui qui maintient ce code afin qu'il puisse l'incorporer) est soit de demander XML au lieu de JSON, soit d'analyser le JSON résultant avec des moyens appropriés au lieu d'essayer de le regarder comme XML (pas sûr comment mettre en œuvre l'un ou l'autre changement, car je ne connais pas ce code).

+0

Il ressemble à première vue, mais c'est en fait l'exemple de code de Yahoo qui échoue AVANT de récupérer les résultats. J'ai regardé de plus près les exemples qu'ils ont fournis, et il semble que leur recherche sur Digg.com échoue. J'essaie de savoir pourquoi, mais je ne connais pas non plus leur code. –