【问题标题】:how to handle duplicate tags in beautifulsoup如何处理beautifulsoup中的重复标签
【发布时间】:2014-01-08 01:56:12
【问题描述】:
<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中有很多百分比标签被拉出来。

【问题讨论】:

    标签: python xml beautifulsoup


    【解决方案1】:

    首先,只匹配外部的。之后就可以循环查看内容了

    >>> 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>
    

    【讨论】:

    • 它停在 0.030.150.167.4
    • 您是否使用findAll 而不是find
    • 它停在第一个系统
    • 不。我必须找到另一种方法来做到这一点。
    【解决方案2】:

    只需使用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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-03
      • 2019-06-15
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 2021-01-29
      • 1970-01-01
      相关资源
      最近更新 更多