Beautiful Soup Find - 只获取文本

Posted

技术标签:

【中文标题】Beautiful Soup Find - 只获取文本【英文标题】:Beautiful Soup Find - get just the text 【发布时间】:2015-07-17 12:27:05 【问题描述】:

我有这段代码仅将价格作为字符串 (125.01) 吐出,但我必须更改某些内容,因为现在它使用 html 标记和所有内容打印整行。我怎样才能让它只打印出文本,而不使用正则表达式?

import requests
from bs4 import BeautifulSoup

url = 'http://finance.yahoo.com/q?s=aapl&fr=uh3_finance_web&uhb=uhb2'

data = requests.get(url)
soup = BeautifulSoup(data.content)
price = soup.find("span", 'id':'yfs_l84_aapl')
print(price)


<span id="yfs_l84_aapl">125.01</span>

【问题讨论】:

已解决。我添加了 .get_text() 方法并且它有效。谢谢@halex 【参考方案1】:

你必须调用你的price变量的get_text()方法:

print(price.get_text())

【讨论】:

或者可能是price.text。不同之处在于,如果 span 有时具有 HTML 格式(例如,红色表示负数),text 将连接所有子标签的文本,而 get_text() 仅返回直接文本。如果您不希望这种情况发生,get_text() 可能就是您想要的。 感谢您快速准确的回答!【参考方案2】:

你在你的汤标签上使用get_text()

print(price.get_text())

【讨论】:

感谢您快速准确的回答!【参考方案3】:

有时我发现.text.get_text() 返回一个空字符串,我必须使用:

print(price.contents[0])

我认为这与返回的 unicode 与字节有关。

【讨论】:

以上是关于Beautiful Soup Find - 只获取文本的主要内容,如果未能解决你的问题,请参考以下文章

使用 Beautiful Soup 查找特定类

Beautiful Soup 4 find_all 找不到 Beautiful Soup 3 找到的链接

Beautiful Soup中的find,find_all

Beautiful Soup findAll 没有找到它们

Python爬虫编程思想(56):Beautiful Soup方法选择器之find方法

Beautiful Soup 中 find_all 方法的返回类型是啥?