我写了一个代码,允许从网站www.bankier.pl上获取公司的所有财务数据,并且它可以工作。不幸的是,有一个问题。我有所有的日期,但没有公司的名称,所以结果如下所示:
0,Przychody netto ze sprzedaży (tys. zł),2 907,5 797,2 733,7 750
1,Zysk (strata) z działal. oper. (tys. zł),370,2 555,-672,5 272
2,Zysk (strata) brutto (tys. zł),-857,1 476,-1 001,4 913
3,Zysk (strata) netto (tys. zł)*,-1 053,1 464,-830,3 977
4,Amortyzacja (tys. zł),486,453,408,368
5,EBITDA (tys. zł),856,3 008,-264,5 640
6,Aktywa (tys. zł),42 992,45 053,44 481,48 650
7,Kapitał własny (tys. zł)*,41 060,43 076,42 246,46 223
8,Liczba akcji (tys. szt.),"2 217,199","2 287,199","2 287,199","2 287,199"
9,Zysk na akcję (zł),-0475,0640,-0363,1739
10,Wartość księgowa na akcję (zł),18519,18834,18471,20209
11,Raport zbadany przez audytora,N,N,N,N
0,Przychody netto ze sprzedaży (tys. zł),9 615,13 231,9 883,16 670
1,Zysk (strata) z działal. oper. (tys. zł),1 029,3 341,994,3 361
2,Zysk (strata) brutto (tys. zł),1 010,3 320,1 022,3 655
3,Zysk (strata) netto (tys. zł)*,826,2 663,833,3 109
4,Amortyzacja (tys. zł),783,661,650,663
5,EBITDA (tys. zł),1 812,4 002,1 644,4 024
6,Aktywa (tys. zł),41 323,44 133,41 838,54 391
7,Kapitał własny (tys. zł)*,30 510,31 782,32 615,35 724
8,Liczba akcji (tys. szt.),"4 119,374","4 119,374","4 119,374","4 119,374"
9,Zysk na akcję (zł),0201,0647,0202,0755
10,Wartość księgowa na akcję (zł),7407,7715,7917,8672
11,Raport zbadany przez audytora,N,N,N,N但是我有超过4000行。所以你可以看到没有名字。我有一个列表names_of_company,其中包含我需要的所有名称。代码从该列表中获取名字,并下载该公司的数据,然后继续。结果应该是这样的:
11BIT 0,Przychody netto ze sprzedaży (tys. zł),2 907,5 797,2 733,7 750
11BIT 1,Zysk (strata) z działal. oper. (tys. zł),370,2 555,-672,5 272
11BIT 2,Zysk (strata) brutto (tys. zł),-857,1 476,-1 001,4 913
11BIT 3,Zysk (strata) netto (tys. zł)*,-1 053,1 464,-830,3 977
11BIT 4,Amortyzacja (tys. zł),486,453,408,368
11BIT 5,EBITDA (tys. zł),856,3 008,-264,5 640
11BIT 6,Aktywa (tys. zł),42 992,45 053,44 481,48 650
11BIT 7,Kapitał własny (tys. zł)*,41 060,43 076,42 246,46 223
11BIT 8,Zysk na akcję (zł),-0475,0640,-0363,1739
11BIT 9,Wartość księgowa na akcję (zł),18519,18834,18471,20209
11BIT 10,Raport zbadany przez audytora,N,N,N,N
4FUNMEDIA 0,Przychody netto ze sprzedaży (tys. zł),9 615,13 231,9 883,16 670
4FUNMEDIA 1,Zysk (strata) z działal. oper. (tys. zł),1 029,3 341,994,3 361
4FUNMEDIA 2,Zysk (strata) brutto (tys. zł),1 010,3 320,1 022,3 655
4FUNMEDIA 3,Zysk (strata) netto (tys. zł)*,826,2 663,833,3 109
4FUNMEDIA 4,Amortyzacja (tys. zł),783,661,650,663
4FUNMEDIA 5,EBITDA (tys. zł),1 812,4 002,1 644,4 024
4FUNMEDIA 6,Aktywa (tys. zł),41 323,44 133,41 838,54 391
4FUNMEDIA 7,Kapitał własny (tys. zł)*,30 510,31 782,32 615,35 724
4FUNMEDIA 8,Zysk na akcję (zł),0201,0647,0202,0755
4FUNMEDIA 9,Wartość księgowa na akcję (zł),7407,7715,7917,8672
4FUNMEDIA 10,Raport zbadany przez audytora,N,N,N,N下面你可以找到我的代码:
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://www.bankier.pl/gielda/notowania/akcje?index=WIG'
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/skonsolidowany/kwartalny/standardowy/1'
links.append(new_string)
############################################################################
for i in links:
url2 = i
page2 = requests.get(url2)
soup = BeautifulSoup(page2.content,'lxml')
# Find the second table on the page
try:
t2 = soup.find_all('table')[0]
df2 = pd.read_html(str(t2))[0]
with open('tesadst.csv', 'a') as f:
df2.to_csv(f, header=False)
except:
pass感谢您的帮助:)
发布于 2018-06-02 22:14:58
您可以将链接创建部分移动到另一个位置。这样,您就可以知道是哪个公司名称生成了DataFrame。您可以在DataFrame中创建一个新列,并为其提供公司名称的值。
for name in names_of_company:
url2 = 'https://www.bankier.pl/gielda/notowania/akcje/{}/wyniki-finansowe/skonsolidowany/kwartalny/standardowy/1'.format(name)现在,在创建了df2之后,您只需在df2中创建一个新列,并将其值设为name……
df2['company_name'] = name这应该就行了
https://stackoverflow.com/questions/50656306
复制相似问题