【问题标题】:Python Beautifulsoup4 remove <span> tagsPython Beautifulsoup4 删除 <span> 标签
【发布时间】:2014-04-03 19:28:06
【问题描述】:
我正在使用这条线路从网站上抓取信息
offers = soup.find_all("span", "rcnt")
这给了我这个结果:
[<span class="rcnt">8.668</span>]
出于某种原因,当我试图打开它时,它给了我这个
[<span class="rcnt"></span>]
而不是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]