从东方财富爬取上市公司财务信息的代码;法律规定每年4月30日前所有上市公司必须公布年度财报,所以在5月之后去爬就行
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

60 lines
2.1 KiB

import csv
import time
from selenium import webdriver
MAX_RETRY_TIME = 150
URL = "https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=%s&color=b#/gsgk"
def get_company(stock_code_list):
try:
browser = webdriver.Firefox()
for stock_code in stock_code_list:
code = stock_code[0]
name = stock_code[1]
stock_code = stock_code[0]
if stock_code[0] == '6':
stock_code = 'SH' + stock_code
elif stock_code[0] == '8' or stock_code[0] == '4':
stock_code = 'BJ' + stock_code
else:
stock_code = 'SZ' + stock_code
url = URL % stock_code
browser.execute_script('window.open("%s")' % url)
retry_time = 0
while True:
try:
if retry_time < MAX_RETRY_TIME:
browser.switch_to.window(browser.window_handles[1])
company_name = browser.find_elements_by_css_selector('div.jbzl_table tr:nth-child(1) td')[0].text
break
else:
return "获取失败"
except:
retry_time += 1
time.sleep(0.2)
company_details = {"股票代码":code,"股票名称":name,"公司名称":company_name}
print(company_details)
company_details_csv = [code,name,company_name]
with open('code_2.csv', 'a', newline='') as newfile:
writer = csv.writer(newfile)
writer.writerow(company_details_csv)
newfile.close()
browser.close()
browser.switch_to.window(browser.window_handles[0])
browser.close()
except Exception as e:
print(e)
return "出错啦"
file = 'stock_code.csv'
with open(file,'r') as file:
code_list = csv.reader(file,delimiter=',')
stock_code_list = []
for code in code_list:
stock_code_list.append(code)
del stock_code_list[0]
get_company(stock_code_list)