我面临以下挑战:我希望获得有关公司的所有财务数据,并且我编写了一个代码来执行此操作,并且让我们说结果如下所示:
Unnamed: 0 I Q 2017 II Q 2017 \ 0 Przychody netto ze sprzedaży (tys. zł) 137 134 1 Zysk (strata) z działal. oper. (tys. zł) -423 -358 2 Zysk (strata) brutto (tys. zł) -501 -280 3 Zysk (strata) netto (tys. zł)* -399 -263 4 Amortyzacja (tys. zł) 134 110 5 EBITDA (tys. zł) -289 -248 6 Aktywa (tys. zł) 27 845 26 530 7 Kapitał własny (tys. zł)* 22 852 22 589 8 Liczba akcji (tys. szt.) 13 921,975 13 921,975 9 Zysk na akcję (zł) -0029 -0019 10 Wartość księgowa na akcję (zł) 1641 1623 11 Raport zbadany przez audytora N N
但是464倍。
不幸的是,当我想将所有464个结果保存在一个CSV文件中时,我只能保存最后一个结果。不是所有464个结果,只有一个......你能帮我救一下吗?以下是我的代码。
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://www.bankier.pl/gielda/notowania/akcje'
page = requests.get(url)
soup = BeautifulSoup(page.content,'lxml')
# Find the second table on the page
t = soup.find_all('table')[0]
#Read the table into a Pandas DataFrame
df = pd.read_html(str(t))[0]
#get
names_of_company = df["Walor AD"].values
links_to_financial_date = []
#all linkt with the names of companies
links = []
for i in range(len(names_of_company)):
new_string = 'https://www.bankier.pl/gielda/notowania/akcje/' + names_of_company[i] + '/wyniki-finansowe'
links.append(new_string)
############################################################################
for i in links:
url2 = f'https://www.bankier.pl/gielda/notowania/akcje/{names_of_company[0]}/wyniki-finansowe'
page2 = requests.get(url2)
soup = BeautifulSoup(page2.content,'lxml')
# Find the second table on the page
t2 = soup.find_all('table')[0]
df2 = pd.read_html(str(t2))[0]
df2.to_csv('output.csv', index=False, header=None)
答案 0 :(得分:1)
你几乎得到了它。您每次都要覆盖您的CSV。取代
df2.to_csv('output.csv', index=False, header=None)
带
with open('output.csv', 'a') as f:
df2.to_csv(f, header=False)
以便附加到CSV而不是覆盖它。
此外,您的示例不起作用,因为:
for i in links:
url2 = f'https://www.bankier.pl/gielda/notowania/akcje/{names_of_company[0]}/wyniki-finansowe'
应该是:
for i in links:
url2 = i
当网站没有数据时,请跳过并转到下一个:
try:
t2 = soup.find_all('table')[0]
df2 = pd.read_html(str(t2))[0]
with open('output.csv', 'a') as f:
df2.to_csv(f, header=False)
except:
pass