无法在任何地方找到答案。 我有一个XML:
<channel>
<title>xxx</title>
<description>aaa</description>
<item>
<title>theTitle</title>
<link/>link
</item>
<title>theTitle2</title>
<link/>link
</item>
我需要从该文件中提取所有链接。
我迭代:
for link in soup.channel.findAll('item'):
links = link.link
linkdict.append(links)
但输出是:
[<link/>, <link/>, <link/>]
如何使用/不使用正则表达式解析此xml。我希望代码尽可能简单。
我已经找到了在一行代码中完成此操作的方法:
soup = bs4.BeautifulSoup(output, features='xml')
答案 0 :(得分:0)
使用此安装Xml - pip install lxml
然后您可以使用
soup = BeautifulSoup(xmlString,"lxml")
答案 1 :(得分:0)
如果您安装了BeautifulSoup
,则可以直接使用 而不是lxml
。在link
树模型中,<link/>
文本将作为相应from lxml import etree
raw = '''<channel>
<title>xxx</title>
<description>aaa</description>
<item>
<title>theTitle</title>
<link/>link
</item>
<item>
<title>theTitle2</title>
<link/>link
</item>
</channel>'''
root = etree.fromstring(raw)
for link in root.xpath('//item/link'):
print link.tail.strip()
元素的 tail 提供:
link
link
输出
//item/link
XPath表达式item
表示在当前文档中的任何位置查找link
元素,并返回相应的子元素lxml
。值得一提的是,在大多数情况下,已知GET /store1/purchase/_search?q=vendor:Marie&size=1&sort=date:desc
{
"query": {
"exists" : {
"field" : "promotionCode"
}
}
}
比BS4更快。
参考文献:
1)it's only :figwheel
submap of project.clj
2)BeautifulSoup 4 Benchmark