55
66@author: lambda
77"""
8-
98import aiohttp
109import asyncio
1110import re
1615import pandas as pd
1716import datetime
1817import time
18+ import requests as request
19+ from lxml import etree
1920
2021user_agent = [
2122 "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50" ,
5657 "Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999" ,
5758 # iPhone 6:
5859 "Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25" ,
59-
6060]
6161
62- today = datetime .date .today ()
63- yestoday = today - datetime .timedelta (days = 1 )
64- print ('今天获取的数据是: ' ,yestoday )
65- fname = str (yestoday )+ ".xlsx"
62+ start = time .time ()
63+
64+ host = 'http://data.eastmoney.com/hsgtcg/list.html?DateType=DateType=%27jd%27'
65+ res = request .get (host )
66+ xml = etree .HTML (res .text )
67+ result = xml .xpath ('/html/body/div[1]/div[8]/div[2]/div[2]/div[1]/div[1]/div/span/text()' )[0 ]
68+ today = result [1 :11 ]
69+ print (f'今天获取的数据是: { today } ' )
70+
71+ fname = str (today )+ ".xlsx"
6672fname1 = "PPOS_POTE_" + fname
6773fname2 = "PPOS_POTE_SZ_" + fname
6874
7783
7884heads = {'HdDate' , 'SCode' , 'SName' , 'NewPrice' , 'ShareSZ_Chg_One' , 'ShareSZ_Chg_Rate_One' , 'LTZB_One' , 'ZZB_One' }
7985rows = []
86+
8087# 获取网页信息
8188async def fetch (session , url ):
8289 headers = {'User-Agent' : random .choice (user_agent )}
@@ -101,19 +108,19 @@ async def download(url):
101108 html = await fetch (session , url )
102109 await parser (html )
103110
104- urls = [f'http://dcfm.eastmoney.com/EM_MutiSvcExpandInterface/api/js/get?type=HSGT20_GGTJ_SUM&token=894050c76af8597a853f5b408b759f5d&st=ShareSZ_Chg_One&sr=-1&p=' + str (p )+ '&ps=50&js=var%20mXyeKPjW={pages:(tp),data:(x)}&filter=(DateType=%27jd%27%20and%20HdDate=%27' + str (yestoday )+ '%27)&rt=53931781' for p in range (1 , 31 )]
111+ #urls = [f'http://dcfm.eastmoney.com/em_mutisvcexpandinterface/api/js/get?callback=jQuery112305322211230994847_1618827285261&st=ShareSZ_Chg_One&sr=-1&ps=50&p='+str(p)+'&type=HSGT20_GGTJ_SUM&token=894050c76af8597a853f5b408b759f5d&js=%7B%22data%22%3A(x)%2C%22pages%22%3A(tp)%2C%22font%22%3A(font)%7D&filter=(DateType%3D%27jd%27)(HdDate%3D%27'+str(today)+'%27)' for p in range(1, 31)]
112+ urls = [f'http://dcfm.eastmoney.com/EM_MutiSvcExpandInterface/api/js/get?type=HSGT20_GGTJ_SUM&token=894050c76af8597a853f5b408b759f5d&st=ShareSZ_Chg_One&sr=-1&p=' + str (p )+ '&ps=50&js=var%20mXyeKPjW={pages:(tp),data:(x)}&filter=(DateType=%27jd%27%20and%20HdDate=%27' + str (today )+ '%27)&rt=53931781' for p in range (1 , 31 )]
105113
106114# 利用asyncio模块进行异步IO处理
107115async def main ():
108116 await asyncio .gather (* [download (url ) for url in urls ])
109-
110- start = time .time ()
117+
111118asyncio .run (main ())
112119# 将rows转化为pandas中的DataFrame
113120df = pd .DataFrame (rows )
114121df .columns = ['日期' , '代码' , '名称' , '最新股价' , '市值' , '市值增幅' , '占流通股比' , '占总股比' ]
115122# 从大到小排序
116- df .sort_values (by = '市值' )
123+ df .sort_values (by = '市值' , ascending = False )
117124try :
118125 df .to_excel (fname ) # 保存成Excel文件
119126except Exception as e :
0 commit comments