我有
类型的数据<preference>
<name>throttle_scan</name>
<value>yes</value>
</preference>
<preference><name>listen_address</name>
<value>0.0.0.0</value>
</preference>
这些基本上是我想用BeautifulSoup提取的名称/值对。
我设法提取了preference
soup = bs4.BeautifulSoup(string_with_xml, 'html.parser')
for p in soup.find_all('preference'):
c = p.contents
print(c)
根据preference
列出一个列表:
[<name>throttle_scan</name>, '\n', <value>yes</value>, '\n']
[<name>listen_address</name>, '\n', <value>0.0.0.0</value>, '\n']
如何进一步深入查看此列表?我应该选择新的
soup = bs4.BeautifulSoup(''.join(c), 'html.parser')
并搜索name
和value
?
答案 0 :(得分:5)
就这样做,
>>> from bs4 import BeautifulSoup
>>> html = '''<preference>
<name>throttle_scan</name>
<value>yes</value>
</preference>
<preference><name>listen_address</name>
<value>0.0.0.0</value>
</preference>'''
>>> soup = BeautifulSoup(html, 'lxml')
>>> for i in soup.select('preference'):
print i.find('name').text
print i.find('value').text
print '-----------'
throttle_scan
yes
-----------
listen_address
0.0.0.0
-----------
>>>
soup.select
与soup.find_all
的作用相同,但在这里我们可以通过css
选择器,这会让您的生活更轻松。例如,要选择具有类foo
的所有标签,您可以使用
soup.select('.foo')
.
代表class
,#
代表代码id
。