用python提取雅虎财务资产负债表
我正在学习使用beautifulsoup和python来提取html表。我尝试使用以下代码提取谷歌的资产负债表。然而,我似乎无法正确地刮除所有行 我无法忽略只是一个间隔符的行,也无法提取总计行(例如,总资产) 有什么建议吗?关于简化代码的建议也很有价值用python提取雅虎财务资产负债表,python,beautifulsoup,yahoo-finance,Python,Beautifulsoup,Yahoo Finance,我正在学习使用beautifulsoup和python来提取html表。我尝试使用以下代码提取谷歌的资产负债表。然而,我似乎无法正确地刮除所有行 我无法忽略只是一个间隔符的行,也无法提取总计行(例如,总资产) 有什么建议吗?关于简化代码的建议也很有价值 from bs4 import BeautifulSoup import requests def bs_extract(stock_ticker): url= 'https://finance.yahoo.com/q/bs?s='+s
from bs4 import BeautifulSoup
import requests
def bs_extract(stock_ticker):
url= 'https://finance.yahoo.com/q/bs?s='+str(stock_ticker)+'&annual'
source_code = requests.get(url)
plain_text=source_code.text
soup = BeautifulSoup(plain_text)
c1= ""
c2= ""
c3= ""
c4= ""
c5= ""
table = soup.find("table", { "class" : "yfnc_tabledata1" })
# print (table)
for row in table.findAll("tr"):
cells = row.findAll("td")
if len(cells)==5:
c1=cells[0].find(text=True)
c2=cells[1].find(text=True)
c3=cells[2].find(text=True)
c4=cells[3].find(text=True)
c5=cells[4].find(text=True)
elif len(cells)==6:
c1=cells[1].find(text=True)
c2=cells[2].find(text=True)
c3=cells[3].find(text=True)
c4=cells[4].find(text=True)
c5=cells[5].find(text=True)
elif len(cells)==1:
c1=cells[0].find(text=True)
c2=""
c3=""
c4=""
c5=""
else:
pass
print(c1,c2,c3,c4,c5)
bs_extract('goog')
您可能会发现,通过YQL更容易将这些数据结构化。请参见您可能会发现,通过YQL更容易将这些数据结构化。请参见谷歌的网页
google
中没有包含类yfnc\u tabledata1
的表格。谷歌和雅虎将以非常不同的方式显示他们的表格yfnc
可能是“雅虎金融”的缩写。为什么谷歌会使用他们的ID和标签?打开浏览器的开发人员工具,尝试检查元素,了解如何在所需页面上进行分析。关于如何使其更具python风格的注意事项:您可以将这些变量(c1、c2等)放入列表中,而不是单独的变量,然后你就不必有那么多重复的代码了。goog
的网页上没有一个表,该表中的类yfnc\u tabledata1
谷歌和雅虎将以非常不同的方式显示他们的表yfnc
可能是“雅虎金融”的缩写。为什么谷歌会使用他们的ID和标签?打开浏览器的开发人员工具,尝试检查元素,了解如何在所需页面上进行解析。关于如何使其更具Pythonic的注意事项:您可以将这些变量(c1、c2等)放入列表中,而不是单独的变量,这样您就不必有太多重复的代码。只需响应Kupiakos即可。我尝试使用bs_extract('msft'),您将在源代码的某个地方找到yfnc。这一点很好。知道为什么我不能以粗体形式提取行(即总数)吗?只是为了回应Kupiakos。我尝试使用bs_extract('msft'),您将在源代码的某个地方找到yfnc。这一点很好。你知道为什么我不能提取粗体的行(即总数)吗?