PyXMLを使用する必要がありますか、標準ライブラリにあるものを使用しますか?Django/Pythonを使用してRESTfulなWebサービスからXMLを消費する方法は?
3
A
答えて
10
ElementTreeのは、標準のPython LIBSの一部として提供されます。 ElementTreeのは、純粋なのpythonで、cElementTreeが速くCの実装です:
# Try to use the C implementation first, falling back to python
try:
from xml.etree import cElementTree as ElementTree
except ImportError, e:
from xml.etree import ElementTree
は、ここで私はRESTfulなWebサービスからXMLを消費しています使用例、です:
def find(*args, **kwargs):
"""Find a book in the collection specified"""
search_args = [('access_key', api_key),]
if not is_valid_collection(kwargs['collection']):
return None
kwargs.pop('collection')
for key in kwargs:
# Only the first keword is honored
if kwargs[key]:
search_args.append(('index1', key))
search_args.append(('value1', kwargs[key]))
break
url = urllib.basejoin(api_url, '%s.xml' % 'books')
data = urllib.urlencode(search_args)
req = urllib2.urlopen(url, data)
rdata = []
chunk = 'xx'
while chunk:
chunk = req.read()
if chunk:
rdata.append(chunk)
tree = ElementTree.fromstring(''.join(rdata))
results = []
for i, elem in enumerate(tree.getiterator('BookData')):
results.append(
{'isbn': elem.get('isbn'),
'isbn13': elem.get('isbn13'),
'title': elem.find('Title').text,
'author': elem.find('AuthorsText').text,
'publisher': elem.find('PublisherText').text,}
)
return results
3
可能であれば、いつも標準ライブラリを使用することをお勧めします。 ElementTreeはPythonistの間でよく知られているので、たくさんの例を見つけることができます。その部分もC言語で最適化されているので、かなり高速です。
0
BeautifulSoupが持っている、もありますAPIが好むかもしれません。ここでは、Twitterの公開タイムラインからお気に入りに登録してきたすべてのツイートを抽出する方法の例を示します。
from BeautifulSoup import BeautifulStoneSoup
import urllib
url = urllib.urlopen('http://twitter.com/statuses/public_timeline.xml').read()
favorited = []
soup = BeautifulStoneSoup(url)
statuses = soup.findAll('status')
for status in statuses:
if status.find('favorited').contents != [u'false']:
favorited.append(status)
関連する問題
- 1. ヘッダーを使用してWebサービスを消費する方法C#?
- 2. アドホックWebサービス(非SOAP、スキームレスXML)を消費する方法
- 3. Django - XMLを消費する - RESTful
- 4. 一般的な参照を使用してASP.net WebサービスとWCF Webサービスを消費する方法
- 5. Web APIをSignalRサーバーとして使用し、Windowsサービスから消費する
- 6. 私はRESTfulなWebサービスを使用する方法を学んでいRESTfulなWebサービスを通じてJSONobjectに
- 7. Webサービスを消費してテストする最良の方法
- 8. Webサービスをjboss WebサービスにリダイレクトしてPHPで消費する方法
- 9. Webサービスを消費し、iphoneでXMLデータを解析する
- 10. 消費WebサービスXml.Serialization.XmlArrayItemAttribute
- 11. ブラウザ技術を使用してRESTfulなWebサービスを使用する方法
- 12. .NET XML Webサービス、消費クラスがWebサービスクラスにアクセスできない
- 13. 複雑なksoap2メーリングエンベロープを使用してWebサービスを正しく消費する方法は?
- 14. 安心してWebサービスを提供して消費するWeb
- 15. WebサービスからWebアプリケーションへの消費を調整する
- 16. Asp.net Web APIアプリケーションからWeb APIを消費する方法
- 17. Lotus NotesでRESTfulなWebサービスを使用する方法
- 18. RESTful Webサービスを使用して契約を結ぶ方法
- 19. stomp.jsを使用してjavascriptでWebソケットメッセージを消費する方法は?
- 20. 頻繁な消費ではなく定期的にWebサービスを使用する
- 21. ダウンロードファイルレスト(JSON)Webサービスを消費する方法
- 22. Java(メトロ)で.NET Webサービスを使用する - XMLNode/XMLDocumentの消費?
- 23. WSDLファイルとXSDファイルを使用しているWebサービスを消費する
- 24. marklogicを使用して外部Webサービスを消費しています
- 25. レールを使ってWebサービス/ apisを消費する
- 26. .NETからCXF Webサービスを消費するタイムアウトの問題
- 27. RESTletを使用してRESTful Webサービスで 'セッション'を実施する方法は?
- 28. RESTful Webサービスを使用してサブリソースの一部を記述する方法は?
- 29. RESTfulなWCF WebサービスXML戻る標準
- 30. TurboGears2を使用してAPIレストを消費する方法は?
vezultは、どのようにあなたがelem.get()を使用し、時にはあなたは()テキストelem.find使い時々来ますか? – rick
@rick:elem.get()は要素属性の値を取得していますが、elem.find()はelem要素に含まれる要素を検索しています。 – vezult
'tree = ElementTree.parse(urllib2.urlopen(url、data))'は 'rdata'リストなしで動作するはずです。 – jfs