2009-09-14 2 views
0

Я попытался установить инфраструктуру mashup Yahoo BOSS, но у меня возникли проблемы с запуском представленных примеров. Примеры 1, 2, 5 и 6 работают, но 3 & 4 дают ошибки Expat. Вот выход из ex3.py:Yahoo BOSS Python Library, 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 

Похоже, оба примеры сбиваться при попытке запроса Digg.com. Вот запрос, который строится в коде 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

У вас нет проблем с xml фида. Посмотрите на строку: xml.parsers.expat.ExpatError: несогласованный тег: строка 10, столбец 2 корня xml. – mandel

ответ

1

Проблема заключается в строке поиска digg. Он должен быть «s =». Не «поиск =»

0

Я считаю, что должна быть ошибка в примере: он получает результат в формате JSON (на самом деле, если скопировать и вставить этот URL в вашем браузере, вы будет скачать в виде имен файлов search.json, который начинается с

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

т.е. совершенно нормальным JSON, но вместо разбора его с модулями, такими как JSON или simplejson, он пытается проанализировать как XML - и, очевидно, это попытка не выполнена.

Я считаю, что исправление (вероятно, ds, которые будут доведены до сведения тех, кто поддерживает этот код, чтобы они могли его включить) - либо запросить XML вместо вывода JSON, либо выполнить синтаксический анализ полученного JSON с помощью соответствующих средств, а не пытаться рассматривать его как XML (не уверен как наилучшим образом реализовать любое изменение, поскольку я не знаком с этим кодом).

+0

Похоже, это на первый взгляд, но на самом деле это пример кода кода Yahoo, который НЕ ДОЛЖЕН вернуть результаты. Я лучше посмотрел на примеры, которые они предоставили, и похоже, что их поиск на Digg.com терпит неудачу. Я пытаюсь выследить, почему, но я также не знаком с их кодом. –