0

次の形式の solr 出力を解析しようとしています。

<doc>
<str name="source">source:A</str>
<str name="url">URL:A</str>
<date name="p_date">2012-09-08T10:02:01Z</date>
</doc>
<doc>
<str name="source">source:B</str>
<str name="url">URL:B</str>
<date name="p_date">2012-08-08T11:02:01Z</date>
</doc>

ドキュメントを解析するために、美しいスープ (BeautifulStoneSoup を含むバージョン。BS4 より前だと思います) を使用することに熱心です。HTML 解析に美しいスープを使用しましたが、タグの内容を抽出する効率的な方法を見つけることができません。

私は書いた:

for tags in soup('doc'):
    print tags.renderContents()

出力を取得するために強制的に処理できると感じていますが(「スープ」と言うように)、データを抽出するための効率的なソリューションをいただければ幸いです。必要な出力は次のとおりです。

source:A
URL:A
2012-09-08T10:02:01Z
source:B
URL:B
2012-08-08T11:02:01Z

ありがとう

4

2 に答える 2

2

代わりに、タスクにXMLパーサーを使用してください。xml.etree.ElementTreePythonに含まれています:

from xml.etree import ElementTree as ET

# `ET.fromstring()` expects a string containing XML to parse.
# tree = ET.fromstring(solrdata)  
# Use `ET.parse()` for a filename or open file object, such as returned by urllib2:
ET.parse(urllib2.urlopen(url))

for doc in tree.findall('.//doc'):
    for elem in doc:
        print elem.attrib['name'], elem.text
于 2013-01-21T18:29:03.483 に答える
1

この特定の出力形式を使用する必要がありますか?SolrはそのままのPython出力フォーマットをサポートします(少なくともバージョン4では)。クエリでwt=pythonを使用するだけです。

于 2013-01-22T22:22:51.003 に答える