0

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

誰が何がうまくいかないのかについて何か考えがありますか?

ありがとうございました

ダニエル・カーショー

4

1 に答える 1

0

Python urllib docs を調べたところ、次のページが見つかりました。

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

filehandleによって返されるオブジェクトに関する次の警告が含まれていurllib.urlopen()ます。

注意点が 1 つあります。サイズ引数が省略されているか負の値の場合、read() メソッドはデータ ストリームの最後まで読み取れない可能性があります。一般に、ソケットからのストリーム全体が読み取られたことを判断する適切な方法はありません。

etree.fromstring()APIで解析する前に、ファイルの内容全体を Python 文字列として取得する必要があると思います。何かのようなもの:

result = ''
while (1):
    next = handle.read()
    if not next: 
        break
    result += next
于 2011-10-15T16:22:03.960 に答える