【问题标题】:Error With AlchemyAPI Python SDKAlchemyAPI Python SDK 出错
【发布时间】:2011-12-08 09:19:06
【问题描述】:

我正在尝试使用 AlchemyAPI Python 0.7 SDK。但是,当我在其中运行一个方法时,例如URLGetText(url);

我收到此错误:

    nodes = etree.fromstring(result).xpath(xpathQuery)
  File "lxml.etree.pyx", line 2743, in lxml.etree.fromstring (src/lxml/lxml.etree.c:52665)
  File "parser.pxi", line 1573, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:79932)
  File "parser.pxi", line 1452, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:78774)
  File "parser.pxi", line 960, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:75389)
  File "parser.pxi", line 564, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:71739)
  File "parser.pxi", line 645, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:72614)
  File "parser.pxi", line 585, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:71955)
lxml.etree.XMLSyntaxError: AttValue: " or ' expected, line 19, column 11

这来自这个代码区域:

  def GetRequest(self, apiCall, apiPrefix, paramObject):
    endpoint = 'http://' + self._hostPrefix + '.alchemyapi.com/calls/' + apiPrefix + '/' + apiCall
    endpoint += '?apikey=' + self._apiKey + paramObject.getParameterString()
    handle = urllib.urlopen(endpoint)
    result = handle.read()
    handle.close()
    xpathQuery = '/results/status'
    nodes = etree.fromstring(result).xpath(xpathQuery)
    if nodes[0].text != "OK":
      raise Exception, 'Error making API call.'
    return result

有人对出了什么问题有任何想法吗?

谢谢

丹尼尔·克肖

【问题讨论】:

    标签: python lxml alchemyapi


    【解决方案1】:

    我查看了 Python urllib 文档,发现了这个页面:

    http://docs.python.org/library/urllib.html#high-level-interface

    其中包含有关urllib.urlopen() 返回的filehandle 对象的警告:

    一个警告:read() 方法,如果 size 参数被省略或为负,可能直到数据流结束才读取;在一般情况下,没有好的方法可以确定来自套接字的整个流是否已被读取。

    我认为也许您应该确保在使用etree.fromstring() API 解析文件之前将文件的全部内容作为 Python 字符串获取。比如:

    result = ''
    while (1):
        next = handle.read()
        if not next: 
            break
        result += next
    

    【讨论】:

      猜你喜欢
      • 2012-01-10
      • 2013-07-18
      • 2011-08-30
      • 1970-01-01
      • 2015-11-17
      • 2012-08-07
      • 2016-07-25
      • 2021-09-02
      • 1970-01-01
      相关资源
      最近更新 更多