2
>>> import gdata.books.service
>>> service = gdata.books.service.BookService()
>>> results = service.search_by_keyword(isbn='0434003484')
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
  results = service.search_by_keyword(isbn='0434003484')
... snip ...
File "C:\Python26\lib\site-packages\atom\__init__.py", line 127, in CreateClassFromXMLString
  tree = ElementTree.fromstring(xml_string)
File "<string>", line 85, in XML
SyntaxError: syntax error: line 1, column 0

これは最小限の例です。特に、パッケージに含まれているブックサービスの単体テストもまったく同じエラーで失敗します。私はwikiを見て、Google Codeで発行チケットを開いても無駄になりました(これは、ライブラリの問題というよりも、私の側ではばかげたエラーになりがちです)。エラーメッセージの解釈方法がわかりません。重要な場合は、Python 2.6.5と最新バージョンのgdata、つまり2.0.10を使用しています。

4

3 に答える 3

3

gdataクライアントを機能させるにはSSLを無効にする必要があることがわかりました。

...
gd_client.ProgrammaticLogin()
gd_client.ssl = False
...
于 2010-06-10T11:31:21.720 に答える
2

sje397の答えは正しいものです。上記の例では、次の場合:

service.ssl = False

search_by_keywordメソッドを実行する前に、結果が適切に返されます。SSLをfalseに設定しない場合、クライアントが適切に認証されていないため、リクエストはメインのGoogleホームページにリダイレクトされます(したがって、Alex Martelliでエラーが表示されたのは、httpにアクセスしたときに取得したHTMLでした。 //www.google.com ...間違いなく整形式のXMLではありません)。

于 2010-06-14T21:41:25.957 に答える
1

xml文字列を確認するために少しハッキングすると、最初に小文字 <!doctype html>が含まれていることに気付きます(大文字である必要がありますDOCTYPE)。これにより、もちろんXML解析が失敗します。これは間違いなくbookサービスのバグであり、報告する必要があります。一時的な回避策として、をハックしatom/__init__.xmlて行127を次のように変更できます...:

tree = ElementTree.fromstring(xml_string.replace('doctype','DOCTYPE'))

しかし、それはXMLのこのバグを乗り越えますが、496列目に別のバグがあります(これはJavaScriptコードの途中にあると思います)。この時点で、ブックサービス全般に何かがおかしくなっていると思います... :-(

于 2010-05-28T02:33:43.460 に答える