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
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)
|