【问题标题】:Yahoo BOSS Python Library, ExpatError雅虎 BOSS Python 库,ExpatError
【发布时间】:2009-09-14 11:54:27
【问题描述】:

我尝试安装 Yahoo BOSS mashup 框架,但无法运行提供的示例。示例 1、2、5 和 6 有效,但 3 和 4 给出了 Expat 错误。这是 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&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")

【问题讨论】:

  • Feed 的 xml 有没有问题。查看行:xml.parsers.expat.ExpatError: mismatched tag: line 10, column 2 of the xml feed。

标签: python expat-parser yahoo-boss-api


【解决方案1】:

问题在于 digg 搜索字符串。它应该是“s=”。不是“搜索=”

【讨论】:

    【解决方案2】:

    我认为这一定是示例中的错误:它得到了 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 —— 显然这种尝试失败了。

    我相信解决方法(可能需要引起维护该代码的任何人的注意,以便他们可以合并它)要么请求 XML 而不是 JSON 输出,要么以适当的方式解析生成的 JSON,而不是试图将其视为 XML(不确定如何最好地实现任一更改,因为我不熟悉该代码)。

    【讨论】:

    • 第一眼看上去很像,但这实际上是 Yahoo 的示例代码在返回结果之前失败了。我仔细查看了他们提供的示例,看起来他们在 Digg.com 上的搜索失败了。我试图找出原因,但我也不熟悉他们的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    相关资源
    最近更新 更多