【问题标题】:Beautiful Soup Find - get just the textBeautiful Soup Find - 只获取文本
【发布时间】: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

标签: python web beautifulsoup


【解决方案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 与字节有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多