我正在尝试解析表单的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
由于
答案 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。