0

我正在尝试使用 Python 脚本从 Fidelity Investments 抓取页面。我对 Beautifulsoup 有一个问题,经过多次尝试后我无法解决。

我的代码:

    soup = BeautifulSoup(driver.page_source,"html.parser")
    newResult = soup.find_all("span", class_="account-selector--tab-row account-selector--account-balance js-acct-balance ")
    print(newResult)
    try:
       print(newResult.contents)
    except:
       print("Failed newResult.contents")

我得到的结果:

    [<span class="account-selector--tab-row account-selector--account-balance js-acct-balance ">
        $3,980.00</span>]
    Failed newResult.contents

我的问题:

如何$3,980.00进入字符串变量/对象。

我尝试了很多方法,但未能从中提取任何内容newResult。例如,我尝试在 try 块中打印newResult.text, newResult.string.strip(), newResult.getText, newResult.get_text, newResult.contents, 。newResult.stripped_strings所有这些都导致从 except 块执行代码。

请注意,它newResult包含一个换行符和几个不可见的制表符。我不知道这是否有区别。任何帮助将不胜感激,因为我无能为力。

4

1 回答 1

0

怎么了?

soup.find_all()创建span与您的选择匹配的元素列表,您无法直接访问内容。

怎么修?

选项#1 - 遍历您newResult以获取每个文本span

soup = BeautifulSoup(driver.page_source,"html.parser")
newResult = soup.find_all("span", class_="account-selector--tab-row account-selector--account-balance js-acct-balance ")
print(newResult)
for item in newResult:
    try:
       print(item.get_text(strip=True))
    except:
       print("Failed item.get_text(strip=True)")

选项#2 - 如果它只是您想要获得的一个元素,请使用find()而不是find_all()

soup = BeautifulSoup(driver.page_source,"html.parser")
newResult = soup.find("span", class_="account-selector--tab-row account-selector--account-balance js-acct-balance ")
print(newResult)
try:
    print(newResult.get_text(strip=True))
except:
   print("Failed item.get_text(strip=True)")
于 2021-03-09T07:07:17.930 回答