在python中解析Solr输出

时间:2013-01-21 18:24:46

标签: python parsing solr xml-parsing beautifulsoup

我正在尝试解析表单的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

由于

2 个答案:

答案 0 :(得分:2)

使用XML解析器代替任务; Python中包含xml.etree.ElementTree

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

答案 1 :(得分:1)

您是否必须使用此特定输出格式? Solr支持开箱即用的Python输出格式(至少在版本4中),只需在查询中使用wt = python。