html - 使用 BeautifulSoup 从网页下载损益表并转换为 Pandas 数据框?
问题描述
我正在尝试获取麦当劳公司 (MCD) 的损益表“ https://finance.yahoo.com/quote/MCD/financials?p=MCD ”。我用了漂亮的汤。下载了 html,但损益表表似乎没有典型的“tr”、“td”标签。如何将损益表转换为 df 数据框?
我的代码:
url="https://finance.yahoo.com/quote/MCD/financials?p=MCD"
result = requests.get(url)
result.raise_for_status()
result.encoding = "utf-8"
src = result.content
soup = BeautifulSoup(src, 'lxml')
print(soup)
array = []
for tr_tag in soup.find_all('tr'):
b_tag = tr_tag.find_all('td')
array.append(b_tag)
print(array)
解决方案
“使用 BeautifulSoup 从网页下载损益表...”
首先,你说soup.find_all('tr')
;tr
但是,损益表中没有标签。在网站上,每一行都有一个div
标签,然后有一个特定的class
. 指定class
确实可以帮助您准确地告诉程序您想要从网站上得到什么。我使用了div class
“D(tbr) fi-row Bgc($hoverBgColor):h”,因为它在表格的每一行中都是一致的。然后,您可以使用该text
功能从网站获取原始文本,而不是HTML
.
url="https://finance.yahoo.com/quote/MCD/financials?p=MCD"
result = requests.get(url)
result.raise_for_status()
result.encoding = "utf-8"
src = result.content
soup = BeautifulSoup(src, 'lxml')
rows = []
for i in soup.find_all('div',{'class':'D(tbr) fi-row Bgc($hoverBgColor):h'}):
row = i.text
rows.append(row)
print(rows)
推荐阅读
- c++ - C++ 程序提前结束
- go - 如何解析从scanner.Text()返回的JSON字符串
- sql - 是否可以在一个查询中使用 group by 和 partition by 从不同的组中获取价值?
- python - 多个命令到 CMD
- sql-server - SQL中添加相同记录的验证
- python - 如何将自定义时间写入 blob 元数据 GCS 对象?
- symfony - Payum:在 symfony 4.4 上捕获通知
- angularjs - Vaadin 通过 Webpack 包进入 Angular v1.x
- arrays - 如何计算字符串数组中最常见的字符串?
- java - 使用单引号输出序列化 gson