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 4 find_all 找不到 Beautiful Soup 3 找到的链接