<system>
<load><avg01>0.03</avg01><avg05>0.15</avg05><avg15>0.16</avg15></load>
<cpu><user>7.4</user>
<system>3.2</system>
<wait>0.9</wait></cpu>
<memory><percent>17.1</percent>
<kilobyte>1220364</kilobyte></memory>
<swap><percent>0.0</percent>
<kilobyte>396</kilobyte></swap>
</system>
如何在beautifulsoup中获取整个系统标记并跳过中间标记。请注意,外部系统标签内部有系统标签。
r = requests.get(url, timeout=0.5)
result = BeautifulSoup(r.content)
for item in result.findAll('system'):
print item
OUTOUT
<system><load><avg01>0.03</avg01><avg05>0.10</avg05><avg15>0.13</avg15></load><cpu><user>7.7</user></cpu></system>
此外,我想获得百分比值,但整个xml中有很多百分比的标签被拉出来。
答案 0 :(得分:0)
首先,只匹配外部的一个。之后,您可以遍历它以查看内容
>>> for item in soup.find('system'):
print item
<load><avg01>0.03</avg01><avg05>0.15</avg05><avg15>0.16</avg15></load>
<cpu><user>7.4</user>
<system>3.2</system>
<wait>0.9</wait></cpu>
<memory><percent>17.1</percent>
<kilobyte>1220364</kilobyte></memory>
<swap><percent>0.0</percent>
<kilobyte>396</kilobyte></swap>
答案 1 :(得分:0)
只需使用soup.system
from bs4 import BeautifulSoup
html = """
<system>
<load><avg01>0.03</avg01><avg05>0.15</avg05><avg15>0.16</avg15></load>
<cpu><user>7.4</user>
<system>3.2</system>
<wait>0.9</wait></cpu>
<memory><percent>17.1</percent>
<kilobyte>1220364</kilobyte></memory>
<swap><percent>0.0</percent>
<kilobyte>396</kilobyte></swap>
</system>
"""
soup = BeautifulSoup(html)
print soup.system
这会产生:
<system>
<load><avg01>0.03</avg01><avg05>0.15</avg05><avg15>0.16</avg15></load>
<cpu><user>7.4</user>
<system>3.2</system>
<wait>0.9</wait></cpu>
<memory><percent>17.1</percent>
<kilobyte>1220364</kilobyte></memory>
<swap><percent>0.0</percent>
<kilobyte>396</kilobyte></swap>
</system>