失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 教你用 Python 快速获取行业板块股 辅助价值投资!

教你用 Python 快速获取行业板块股 辅助价值投资!

时间:2021-04-24 22:57:50

相关推荐

教你用 Python 快速获取行业板块股 辅助价值投资!

大家好,我是菜鸟哥!

本篇文章,我们来聊聊如何根据「行业板块」辅助我们进行价值投资。

#1.行业板块

行业板块与概念股在定义上还是有很大区别的。

一般来说,概念板块的风险更大,基于某个消息被短期炒作,很不稳定,因此风险更大

行业板块是按股票行业进行分类,往往注重于长期,稳定性更高。

在实际投资上,短期可以根据按「 市场热点」从概念股进行选股投资,中长期还是建议按「行业板块」选股进行投资。

#2. 爬取相关板块及个股列表

目标对象:

aHR0cDovL3N1bW1hcnkuanJqLmNvbS5jbi9oeWJrLw==

2-1板块列表

首先,我们使用 「 Toggle JavaScript 」插件发现页面中的行业板块数据来源于下面的请求结果

http://**/?q=cn|bk|17&n=hqa&c=l&o=pl,d&p=1020&_dc=1650680429759

其中,参数为 p 和_dc 为可变参数,p 代表页码数(从 1 开始),_dc 代表 13 位的时间戳,其他查询参数都是固定内容

然后,我们编写代码获取响应数据,使用正则表达式匹配出行业列表的数据

...self.ps_url='http://**/?q=cn|bk|17&n=hqa&c=l&o=pl,d&p={}050&_dc={}'....def__get_timestramp(self):"""获取13位的时间戳:return:"""returnint(round(time.time()*1000))...defget_plates_list(self,plate_keyword):"""获取所有板块:return:"""plates=[]index=0whileTrue:url=self.ps_url.format(index+1,self.__get_timestramp())#解析数据resp=self.session.get(url,headers=self.headers).textmatch=pile(r'HqData:(.*?)};',re.S)result=json.loads(re.findall(match,resp)[0].strip().replace("\n",""))ifnotresult:break#根据关键字,过滤有效板块temp_plate_list=[itemforiteminresultifplate_keywordinitem[2]]index+=1foritemintemp_plate_list:print(item)plates.append({"name":item[2],"plate_path":item[1],"up_or_down":str(item[10])+"%","top_stock":item[-6]})returnplates...

最后,根据关键字对板块进行一次筛选,通过板块名、板块路径 PATH、板块涨跌幅、最大贡献股票名称重新组装成一个列表

注意:通过分析页面发现,根据板块路径 PATH 可以组装成行业板块个股列表页面 URL

比如,行业板块 PATH 为 400128925,那么行业板块对应个股列表的页面 URL 为

http://summary.**/hybk/400128925.shtml

2-2行业个股列表

爬取行业个股列表和上一步数据展示逻辑一样,个股列表数据同样来源于下面请求的结果

http://**/?q=cn|s|bk{}&c=m&n=hqa&o=pl,d&p={}020&_dc={}

其中,bk 后面对应行业板块 PATH,p 代表页码数,_dc 代表 13 位的时间戳

...#个股self.stock_url='http://**/?q=cn|s|bk{}&c=m&n=hqa&o=pl,d&p={}020&_dc={}'....defget_stock_list(self,plate_path):"""获取某一个板块下所有的个股信息包含:股票名称、最新价格、涨跌幅、市盈率:paramplate_info::return:"""index=0stocks=[]whileTrue:url=self.stock_url.format(plate_path,index+1,self.__get_timestramp())resp=self.session.get(url,headers=self.headers).textmatch=pile(r'HqData:(.*?)};',re.S)result=json.loads(re.findall(match,resp)[0].strip().replace("\n",""))ifnotresult:breakindex+=1foriteminresult:ifitem[-1]<0:continuestocks.append({"stock_name":item[2],"pe":item[-1],"price":item[8],"up_or_down":str(item[12])+"%"})#按pe降序排列stocks.sort(key=lambdax:x["pe"])returnstocks

通过正则表达式对响应结果进行匹配后,获取个股的名称、PE 市盈率、价格、涨跌幅 4 个关键数据

最后,对个股列表按 PE 进行升序排列后直接返回

# 3. 服务化

当然,我们可以将这部分逻辑服务化供前端使用,以此提升用户的体验性

比如,使用 FastAPI 可以快速创建两个服务:根据关键字获取行业板块列表、根据板块路径获取个股列表

frompydanticimportBaseModel#板块classPlate(BaseModel):content:str#关键字#板块下的个股classPlateStock(BaseModel):plate_path:str#板块路径#===========================================================...#获取板块列表@app.post("/xag/plate_list")asyncdefget_plate_list(plate:Plate):pstock=PStock()try:result=pstock.get_plates_list(plate.content)returnsuccess(data=result,message="查询成功!")exceptExceptionase:returnfail()finally:pstock.teardown()#获取某一个板块下的所有股票列表@app.post("/xag/plate_stock_list")asyncdefget_plate_list(plateStock:PlateStock):pstock=PStock()try:result=pstock.get_stock_list(plateStock.plate_path)returnsuccess(data=result,message="查询成功!")exceptExceptionase:returnfail()finally:pstock.teardown()...

前端以 Uniapp 为例,使用 uni-table 组件展示行业板块列表及个股列表

部分代码如下:

//个股列表platestock.vue...<viewclass="box"><uni-formsref="baseForm":modelValue="baseFormData":rules="rules"><uni-forms-itemlabel="关键字"requiredname="content"><uni-easyinputv-model="baseFormData.content"placeholder="板块关键字"/></uni-forms-item></uni-forms><buttontype="primary"@click="submit('baseForm')">提交</button><!--结果区域--><viewclass="result"v-show="result.length>0"><uni-tableref="table"borderstripeemptyText="暂无数据"><uni-trclass="uni-item"><uni-thalign="center"class="uni-th"width="100%">板块</uni-th><uni-thalign="center"class="uni-th"width="100%">涨跌幅</uni-th><uni-thalign="center"class="uni-th"width="100%">强势股</uni-th></uni-tr><uni-trclass="uni-item"v-for="(item,index)inresult":key="index"@row-click="rowclick(item)"><uni-tdclass="uni-th"align="center">{{item.name}}</uni-td><uni-tdalign="center"class="uni-th">{{item.up_or_down}}</uni-td><uni-tdalign="center"class="uni-th">{{item.top_stock}}</uni-td></uni-tr></uni-table></view></view>...methods:{//表单提交数据submit(ref){this.$refs[ref].validate().then(res=>{this.$http('xag/plate_list',this.baseFormData,{hideLoading:false,hideMsg:false,method:'POST'}).then(res=>{console.log("内容:",res.data)if(res.data&&res.data.length>0){this.$tip.success("查询成功!")this.result=res.data}else{this.$tip.success("查询结果为空,请换一个关键字查询!")}}).catch(err=>{console.log("产生异常,异常信息:",err)})}).catch(err=>{console.log('err',err);})}...

最后部署完项目后,在前端页面就能根据板块名选择合适的个股进行投资了

# 4. 总结一下

由于行业板块更适用于中长期投资,我们只需要根据某一个关键字筛选出一个板块,然后在板块下的个股列表中可以非常直观地看出市盈率较低的个股进行投资即可。

需要源码的同学,请在后台输入:小助手,找他领取(暗号:行业板块)

这是我开发的机器人公众号小号,目前增加了天气查询,955公司名单,关注时间查询;后面还会增加图片功能和每日送书抽奖送书活动,以及调戏功能,欢迎来体验,捧场。

全新机器人公众号上线啦,欢迎调戏!

推荐阅读:入门:最全的零基础学Python的问题 |零基础学了8个月的Python|实战项目|学Python就是这条捷径干货:爬取豆瓣短评,电影《后来的我们》|38年NBA最佳球员分析| 从万众期待到口碑扑街!唐探3令人失望 |笑看新倚天屠龙记|灯谜答题王|用Python做个海量小姐姐素描图|碟中谍这么火,我用机器学习做个迷你推荐系统电影趣味:弹球游戏 |九宫格 |漂亮的花|两百行Python《天天酷跑》游戏!AI:会做诗的机器人|给图片上色|预测收入|碟中谍这么火,我用机器学习做个迷你推荐系统电影小工具:Pdf转Word,轻松搞定表格和水印!|一键把html网页保存为pdf!|再见PDF提取收费!|用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换|制作一款钉钉低价机票提示器!|60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

1).卧槽!Pdf转Word用Python轻松搞定!

2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃

3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密

4).80行代码!用Python做一个哆来A梦分身

5).你必须掌握的20个python代码,短小精悍,用处无穷

6).30个Python奇淫技巧集

7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货

8).再见Python!我要学Go了!2500字深度分析!

9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片

点阅读原文,看B站我的视频!

如果觉得《教你用 Python 快速获取行业板块股 辅助价值投资!》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。