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サービス(非SOAP、スキームレスXML)を消費する方法
- 2. Django - XMLを消費する - RESTful
- 3. 一般的な参照を使用してASP.net WebサービスとWCF Webサービスを消費する方法
- 4. Webサービスを消費してテストする最良の方法
- 5. Webサービスを消費し、iphoneでXMLデータを解析する
- 6. ブラウザ技術を使用してRESTfulなWebサービスを使用する方法
- 7. 複雑なksoap2メーリングエンベロープを使用してWebサービスを正しく消費する方法は?
- 8. .NET XML Webサービス、消費クラスがWebサービスクラスにアクセスできない
- 9. WebサービスからWebアプリケーションへの消費を調整する
- 10. RESTful Webサービスを使用して契約を結ぶ方法
- 11. Lotus NotesでRESTfulなWebサービスを使用する方法
- 12. WSDLファイルとXSDファイルを使用しているWebサービスを消費する
- 13. Java(メトロ)で.NET Webサービスを使用する - XMLNode/XMLDocumentの消費?
- 14. レールを使ってWebサービス/ apisを消費する
- 15. .NETからCXF Webサービスを消費するタイムアウトの問題
- 16. RESTful Webサービスを使用してサブリソースの一部を記述する方法は?
- 17. RESTletを使用してRESTful Webサービスで 'セッション'を実施する方法は?
- 18. Django - RESTfulサービスを非同期で消費する
- 19. C#Webサービス用カスタムHttpヘッダーを追加する方法Axis 1.4 Webサービスを消費するクライアント
- 20. RESTfulなWCF WebサービスXML戻る標準
- 21. RESTful CXFを使用したマルチパート/フォームデータの消費
- 22. WCF Webサービスは、常に私たちのチケットシステムのOTRSからのSOAP Webサービスを消費していますヌル
- 23. WebサービスからXMLを返す方法
- 24. ノードjsを使用するRESTful Webサービス
- 25. カフカの消費者は、私はカフカサーバからのメッセージ(トピック)を消費するKafkaConsumerを使用してい
- 26. .NET Webサービスを消費するシンプルなWindowsシステムトレイデスクトップアプリケーションの開発
- 27. RESTful Webサービスの結果を消費した後にACKを送信しますか?
- 28. 多くのWebサービスを消費するデザインWebアプリケーション
- 29. RESTfulなWebサービス
- 30. NativeScriptでWebサービス使用API RESTfulサービスに接続する方法は?
vezultは、どのようにあなたがelem.get()を使用し、時にはあなたは()テキストelem.find使い時々来ますか? – rick
@rick:elem.get()は要素属性の値を取得していますが、elem.find()はelem要素に含まれる要素を検索しています。 – vezult
'tree = ElementTree.parse(urllib2.urlopen(url、data))'は 'rdata'リストなしで動作するはずです。 – jfs