【问题标题】:Python - How to extract a number from a bs4 outputPython - 如何从 bs4 输出中提取数字
【发布时间】:2020-04-14 14:26:00
【问题描述】:

我正在尝试使用 BeautifulSoup 从网站获取价格,到目前为止,我已经设法获得:

<h2>£<!-- -->199.99</h2>

我只想收到“199.99 英镑” 有没有办法过滤掉字母?

提前致谢

【问题讨论】:

  • 你的意思是你想要文本内容吗?您是否阅读了 BS4 文档?
  • 你的代码轨迹在哪里?
  • 请通过stackoverflow.com/help/how-to-ask 提出一个更容易理解的问题。
  • print(soup.find("h2").text)

标签: python beautifulsoup


【解决方案1】:

如有必要,您将使用带有 strip=True 的 get_text 函数进行清理

from bs4 import BeautifulSoup


html = '<h2>£<!-- -->199.99</h2>'
soup = BeautifulSoup(html,'html5lib')

result = soup.find('h2').get_text(strip=True)

print(result)
#£199.99

【讨论】:

  • 您根本不需要strip 元素!你正在处理CDATA,它在源代码中被默默地剥离。
  • 坏习惯,我这边
【解决方案2】:

使用重新?

import re

s = "<h2>£<!-- -->199.99</h2>"

rx_price = re.compile(r'([0-9.]+)')

content = re.sub(r'<.+?>', '', s)

print (f"£{rx_price.findall(content)[0]}")

输出:

£199.99

【讨论】:

  • 如果OP使用bs4并标记bs4并且可以在bs4内完成,为什么他需要使用REGEX?
猜你喜欢
  • 1970-01-01
  • 2019-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
  • 2021-09-20
相关资源
最近更新 更多