强势股票指前一个交易日交易最活跃的股票,无论是上涨还是下跌,参与的资金量都很大,其筛选条件:
(个股的流通市值÷该股的成交额)< 5
本文讲解如何用python从某财网站抓取A股全部个股的代码、股票名称、换手率、流通市值和成交额数据,然后在Excel中计算出个股的强势数值。
代码如下:
import time
import datetime
import requests
from bs4 import BeautifulSoup
import re
import random
class EastMoneySpider:
def __init__(self):
self.tryMaxTime = 3 #每页抓取可重试的最大次数
def start(self):
now = int(time.time())
date = time.localtime(now)
dateStr = time.strftime("%Y-%m-%d %H:%M:%S",date)
t1 = time.perf_counter()
flag1 = True #判断这次爬取是否成功
allstocks_hsl = []
for index in range(1,11): # 每页500,共10页,
thismin_stkhsl = self.request1(index)
flag1 = thismin_stkhsl[0]
allstocks_hsl.extend(thismin_stkhsl[1])
time.sleep(random.randint(3,12)) # 抓取页面之间随机涨停几秒,防止被禁
print('\n正在抓取第 ',index,' 页......')
if flag1:
print("时间 {0} 爬取成功!\n".format(dateStr))
else:
print("时间 {0} 爬取失败!\n".format(dateStr))
t2 = time.perf_counter()
print('allstocks_hsl len:',len(allstocks_hsl))
print('allstocks_hsl[0]:',allstocks_hsl[0])
print('\n 把当前抓取到的股票信息写入csv文件....')
currentDT = datetime.datetime.today().strftime('%Y%m%d')
hsl_filename = '.\\work_data\\allstocks_ltsz'+ currentDT + '.csv'
with open(hsl_filename,'w') as new_file:
for line in allstocks_hsl:
x = str(line)+'\n'
new_file.write(x)
#stocks_hsl.to_csv('allstocks_hsl.csv',encoding='gbk')
print(f' 耗时 {round(t2-t1,2)} 秒')
return allstocks_hsl #stocks_hsl
def request1(self,page):
dt = int(round(time.time()*1000))
url = "http://92.push2.eastmoney.com/api/qt/clist/get?cb=jQuery112404133306165123496_1630231824618&pn={0}&pz=500&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1630231824619".format(page)
heads = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"}
try:
resText = requests.get(url)
soup = BeautifulSoup(resText.content, features='lxml')
#print(soup.text)
pattern = re.compile(r":\[{(.*)}\]")
resStr = pattern.search(soup.text).group()
resStr = re.sub(r':\[','',resStr)
resStr = re.sub(r'\]','',resStr)
resStrList = resStr.split('},')
thispage_stkmoneydata = []
i = 0
for singleStr in resStrList:
singleStr_split = singleStr.split(',')
thispage_stkmoneydata.append(singleStr_split[11][7:-1]+'-'+singleStr_split[13][7:-1]+'-'+singleStr_split[7][5:]+ \
'-'+singleStr_split[4][5:]+'-'+singleStr_split[5][5:]+'-'+singleStr_split[19][6:])
# 代码 - 名称 - 换手率 - 成交量 - 成交额 - 流通市值
i = i + 1
except requests.exceptions.RequestException as e:
if self.tryMaxTime <= 0:
print("本次抓取连接超时")
return False
else:
self.tryMaxTime -= 1
self.request1(page)
return True, thispage_stkmoneydata
if __name__ == "__main__":
moneySpider = EastMoneySpider()
def job():
latest_stockhsl = moneySpider.start()
print('\nstock_hsratio len:',len(latest_stockhsl))
print(len(latest_stockhsl))
# print(latest_stockhsl[:50])
thismin_info = job()
抓取20220314收盘后的数据结果保存为
allstocks_ltsz20220314.csv文件(共4828只股票),格式如下:
301131-N聚赛龙-73.61-87977-694711584.0-923901350
300942-易瑞生物-23.17-248476-936812576.0-4232352223
688076-诺泰生物-27.82-126275-484729968.0-1874001039
300306-远方信息-25.84-392454-544146624.0-2133679787
300624-万兴科技-13.77-154946-650181312.0-4729847965
300636-同和药业-7.58-128200-317913072.0-4325809142
688105-诺唯赞-38.12-125997-1525087456.0-3990630141
301060-兰卫医学-64.8-280305-1205152608.0-1870813350
301089-拓新药业-45.41-124899-2528774464.0-5719687470
300965-恒宇信通-11.55-17328-113635046.0-975000000
601933-永辉超市-3.65-3310063-1355224352.0-38568907220
600355-精伦电子-13.49-663738-223852728.0-1717391308
600853-龙建股份-6.73-675927-243607085.0-3728184736
600448-华纺股份-14.52-914440-336005344.0-2336630946
600545-卓郎智能-1.81-342519-106275364.0-6008459194
002103-广博股份-12.74-537031-302609888.0-2444563190
603778-乾景园林-0.48-30941-15594012.0-3239999996
601696-中银证券-11.14-1617528-2072069888.0-18929962085
002910-庄园牧场-8.91-152444-216422125.0-2475266417
603716-塞力医疗-14.93-300641-486059440.0-3267477889
......
导入Excel中筛选出符合强势股票筛选条件的股票(也可以在python程序中写相应的代码做计算和筛选),如下图:

注意:图中包括上涨和下跌交易最活跃的股票,需要从中观察上涨过程的股票。
抓取网页url =
http://92.push2.eastmoney.com/api/qt/clist/get?cb=
jQuery112404133306165123496_1630231824618&pn=1&pz=500&po=1&np=1&ut=
bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1630231824619 中的数据规格如下:
{"f1":2,
"f2":77.3, 今日收盘价
"f3":157.67, 涨跌比%
"f4":47.3, 涨跌差值
"f5":87977, 成交量
"f6":694711584.0, 成交额
"f7":43.17, 振幅%
"f8":73.61, 换手率%
"f9":57.62, 市盈率
"f10":"-",
"f11":1.7,
"f12":"301131", 股票代码
"f13":0,
"f14":"N聚赛龙",
"f15":88.03, 最高价
"f16":75.08, 最低价
"f17":76.01, 开盘价
"f18":30.0, 昨收
"f20":3693394000, 总市值
"f21":923901350, 流通市值
"f22":-0.18,
"f23":4.83,
"f24":157.67, 涨跌比%
"f25":157.67,
"f62":244793452.0,
"f115":57.62, 市盈率
"f128":"-",
"f140":"-",
"f141":"-",
"f136":"-",
"f152":2}
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/76381
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!