繁体   English   中英

用美汤获取 html 文字

[英]Get html text with Beautiful Soup

我正在尝试从 div 中获取数字:

<div class="tv-symbol-price-quote__value js-symbol-last">122.7<span class="">8</span></div>

我需要 122.7 号码,但我找不到。 我尝试过:

strings = soup.find("div", class_="tv-symbol-price-quote__value js-symbol-last").string

但是,有不止一个元素,我收到“无”。

有没有办法打印孩子并从孩子那里获取字符串?

使用.getText()

例如:

from bs4 import BeautifulSoup

sample_html = """
<div class="tv-symbol-price-quote__value js-symbol-last">122.7<span class="">8</span></div>
"""

soup = BeautifulSoup(sample_html, "html.parser")
strings = soup.find("div", class_="tv-symbol-price-quote__value js-symbol-last").getText()
print(strings)

Output:

122.78

或使用__next__()获取122.7

soup = BeautifulSoup(sample_html, "html.parser")
strings = soup.find("div", class_="tv-symbol-price-quote__value js-symbol-last").strings.__next__()
print(strings)

Output:

122.7

要仅获取第一个文本,请搜索标签,然后调用next_element方法。

from bs4 import BeautifulSoup


html = """
<div class="tv-symbol-price-quote__value js-symbol-last">122.7<span class="">8</span></div>
"""
soup = BeautifulSoup(html, "html.parser")

print(
    soup.find("div", class_="tv-symbol-price-quote__value js-symbol-last").next_element
)

Output:

122.7

您可以使用 selenium 查找元素,然后使用 BS4 解析它。 一个例子是

import selenium.webdriver as WD
from selenium.webdrive.chrome.options import Options
import bs4 as B

driver = WD.Chrome()

objXpath = driver.find_element_by_xpath("""yourelementxpath""")
objHtml = objXpath.get_attribute("outerHTML")
soup = B.BeutifulSoup(objHtml, 'html.parser')
text = soup.get_text()

这段代码应该可以工作。
免责声明
我有一段时间没有使用 selenium 和 bs4 完成工作,所以你可能需要稍微调整一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM