概要
pyquery は XML を JQuery のように処理するこができる。
XML の namespace も処理することができる。
処理するXML
pypi は 各パッケージに DOAP(Description of a Project) が提供されているので、サンプルとしてこれを処理する。
pyquery 1.2.1 の DOAP は http://pypi.python.org/pypi?:action=doap&name=pyquery&version=1.2.1になる。
DOAP の形式確認
DOAP は RDF で、pypi の DOAP は以下のような形式になっている。
<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF xmlns="http://usefulinc.com/ns/doap#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<Project>
<name></name>
<shortdesc></shortdesc>
<description></description>
<homepage></<homepage>
<maintainer>
<foaf:Person>
<foaf:name></foaf:name>
<foaf:mbox_sha1sum></foaf:mbox_sha1sum>
</foaf:Person>
</maintainer>
<release><Version><revision></revision></Version></release>
</Project></rdf:RDF>
サンプル
revisionの中身を取るには以下のようにする。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pyquery import PyQuery as pq
def main():
url = 'http://pypi.python.org/pypi?:action=doap&name=pyquery&version=1.2.1'
# namespace
namespaces = {"ns": "http://usefulinc.com/ns/doap#"}
# pyquery
query = pq(url, parser='xml')
# revision の取得
revision = query('ns|revision',
namespaces=namespaces).text()
print revision
if __name__ == '__main__':
main()
どうやって調べるのか
Python 系のパッケージはだいたいテストソースが付いている。
pyquery のテストソースには namespace の処理例が書いてある。
namespace の処理以外にも pyquery で可能な処理がほとんど書いてあるので、テストソースを読むと大体の事は解決する。