Python 如何基于span.text获取td值?

Python 如何基于span.text获取td值?,python,html,beautifulsoup,Python,Html,Beautifulsoup,我想从路透社收集一些资产负债表指标/价值 例如,我想得到过去三年“总资产”的价值。我能够找到相应的span.text,但我如何获得其最近三年2020年、2019年和2018年的值?我知道它们存储在td值中,但我不知道如何跳转到td中 from bs4 import BeautifulSoup import requests url_balance = 'https://www.reuters.com/companies/AAPL.OQ/financials/balance-sheet-ann

我想从路透社收集一些资产负债表指标/价值

例如,我想得到过去三年“总资产”的价值。我能够找到相应的
span.text
,但我如何获得其最近三年2020年、2019年和2018年的值?我知道它们存储在
td
值中,但我不知道如何跳转到
td

from bs4 import BeautifulSoup
import requests

url_balance  = 'https://www.reuters.com/companies/AAPL.OQ/financials/balance-sheet-annual'
page = requests.get(url_balance)

if page.status_code == requests.codes.ok:
    soup = BeautifulSoup(page.content, 'html.parser')

    spans = soup.findAll('span')
    for span in spans:
        if span.text == 'Total Assets':
            #total_asset_val_2020 = ???     How to get the value of Total Asset 2020 into that variable?
            #total_asset_val_2019 = ???     How to get the value of Total Asset 2019 into that variable?
            #total_asset_val_2018 = ???     How to get the value of Total Asset 2018 into that variable?
            print(span.text)

这是一个你可以尝试的解决方案

from bs4 import BeautifulSoup
import requests

url_balance = 'https://www.reuters.com/companies/AAPL.OQ/financials/balance-sheet-annual'
page = requests.get(url_balance)

soup = BeautifulSoup(page.content, 'html.parser')

dates_ = ["20", "19", "18", "17", "16"]
total_assets = (
    i.text for i in soup.find("span", text="Total Assets").parent.parent.find_all("td")
    if i.text.strip()
)

print(list(zip(dates_, total_assets)))


谢谢,这对我帮助很大!如何从Key Metrics()端获取值?例如,如果我想要“价格与自由现金流之比(每股TTM)”的值,我该怎么做?你能帮我修改一下你的答案吗?那太棒了。谢谢!!
[('20', '323,888.00'), ('19', '338,516.00'), ('18', '365,725.00'), ('17', '375,319.00'), ('16', '321,686.00')]