【问题标题】:Python Beautifulsoup4 remove <span> tagsPython Beautifulsoup4 删除 <span> 标签
【发布时间】:2014-04-03 19:28:06
【问题描述】:

我正在使用这条线路从网站上抓取信息
offers = soup.find_all("span", "rcnt")
这给了我这个结果:
[&lt;span class="rcnt"&gt;8.668&lt;/span&gt;]
出于某种原因,当我试图打开它时,它给了我这个
[&lt;span class="rcnt"&gt;&lt;/span&gt;]
而不是8.668

如何正确编码

【问题讨论】:

    标签: python tags beautifulsoup html


    【解决方案1】:

    使用.string 或.renderContents() 获取值。

    htmls = '<span class="rcnt">8.668</span>'
    soup = BeautifulSoup(htmls)
    offers =  soup.find_all("span", "rcnt")
    
    print offers[0].string           ## this one is better
    print offers[0].renderContents()
    

    【讨论】:

      【解决方案2】:

      从您的描述中不清楚您使用什么代码来获取(解包)内容。这就是你要做的。

      offers 是一个列表。要获取 span 元素中的内容,您可以:

      elements = [tag.text for tag in offers]
      

      elements 将包含 HTML 中所有 span 标签的内容。

      >>> html = '<span class="rcnt">8.668</span><span class="rcnt">5.7868</span>'
      >>> soup = BeautifulSoup(html)
      >>> offers =  soup.find_all("span", "rcnt")
      >>> elements = [tag.text for tag in offers]
      >>> elements
      [u'8.668', u'5.7868']
      

      【讨论】:

        【解决方案3】:

        只需使用 .string() 来检索任何 html 标记内的值。

        html = '<span class="rcnt">8.668</span>'
        soup = BeautifulSoup(html)
        offers = soup.('span',attrs={"class":"rcnt"})
        

        它返回一个包含所有 span 标签的数组。现在您可以使用 .string() 函数来检索 span 标签内的字符串部分:

        for i in range(0,len(offers)):
         print offers[i]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-04-25
          • 2011-02-01
          • 2017-10-30
          • 1970-01-01
          • 2011-05-20
          • 2021-11-13
          • 1970-01-01
          相关资源
          最近更新 更多