当前位置: 首页 > 后端技术 > Python

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

时间:2023-03-25 21:20:36 Python

在这篇文章中,我们来谈谈如何基于“行业板块”来辅助我们进行价值投资1.行业板块行业板块和概念股在定义上还是有很大区别的。这个消息短期炒作,很不稳定,所以风险比较大。行业板块按存量行业分类,往往着眼于长线,稳定性较高。实际投资方面,短期内可根据“市场热点”选择概念股,中长期建议根据“行业板块”选择个股进行投资。2.抓取相关板块和个股名单。区块数据来自如下请求结果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):"""Getallplates:""""""""""""]Index=0While"True:url=self.ps_url.format(index+1,硒lf.__get_timestramp())#解析数据resp=self.session.get(url,headers=self.headers).text匹配=re.compile(r'HqData:(.*?)};',re.S)result=json.loads(re.findall(match,resp)[0].strip().replace("\n",""))ifnotresult:break#根据关键字,过溢出=有效板platemitemplist[对于INSTER中的项目,如果plate_keyword在item[2]]中索引+=1fortemp_plate_list中的项目:print(item)plates.append({“name”:item[2],“plate_path”:item[1],“up_or_or_down”“:str(item[10])+“%”,“top_stock”:item[-6]})返回板...最后:通过名称组装成组装成:通过一:通过页面页面页面页面页面页面发现,根据根据分析页面发现分析分析分析分析个分析页面页面页面页面个页面页面页面根据根据根据重新重新重新重新重新重新重新组装成组装成组装成组装成组装成组装成组装成组装成一一路径一个个个一一一一一重新重新重新重新重新组装成重新重新重新组装成组装成组装成重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新重新为http:///summary.**/hybk/400128925.shtml2-2行业库存榜爬取行业库存榜与上一步的数据展示逻辑相同。股票列表数据也来自如下请求的结果http://**/?q=cn|s|bk{}&c=m&n=hqa&o=pl,d&p={}020&_dc={}其中,bk后面是行业板块PATH,p代表页码,_dc代表13位时间戳...#个股自。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=re.compile(r'HqData:(.*?)};',re.S)result=json.loads(re.findall(match,resp)[0].strip().replace("\n",""))如果不是结果:breakminforindex+=1项目结果:如果项目m[-1]<0:继续Stocks.append({"stock_name":Item[2],"PE":Item[-1],"Price":Item[8],"up_or_down":str(Item12])+"%"})#按pe降序排序stocks.sort(key=lambdax:x["pe"])returnstocks将响应结果用正则表达式匹配后,得到股票名称,PE市盈率4个关键数据,价格,涨跌幅最后将个股列表按照PE升序排序,直接返回3.服务化当然我们可以把这部分逻辑服务化给前端使用,所以以提高用户体验。例如使用FastAPI可以快速创建两个服务:根据关键词获取行业板块列表,根据板块路径获取个股列表frompydanticimportBaseModel#plateclassPlate(BaseModel):内容:str#KEYWORD#板块下个股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="querysuccessfully!")exceptExceptionase:returnfail()finally:pstock.teardown()#获取某个板块下的所有股票列表@app.post("/xag/plate_stock_list")asyncdefget_plate_list(plateStock:PlateStock):pstock=PStock()尝试:结果=pstock.get_stock_list(plateStock.plate_path)返回成功(data=result,message="查询成功!").teardown()...前端以Uniapp为例,使用uni-table组件显示行业板块列表和个股列表。部分代码如下://个股列表platestock.vue...提交0">er"thign-="uni-trclass="uni-item">er"thign-Plate变化强劲库存vuni-itemclass="-for="(item,index)inresult":key="index"@row-click="rowclick(item)">{{item.name}}{{item.up_or_down}}{{item。[ref].validate()。然后(res=>{this。$http('xag/plate_list',this.baseformdata,{hideloading:false,hidemsg:hidemsg:hidemsg:false,method:'post'})。然后>{console.log("content:",res.data)if(res.data&&res.data.Length>0){this.$tip.success("查询成功!")this.Result=res.data}els{this.$tip.success("查询结果为空,请换个关键字查询!")})。catch(err=>{console.log("产生异常,异常信息:",err)})})})})})}).catch(err=>{console.log('err',err);})行业板块更适合中长期投资。我们只需要根据某个关键词筛选出一个板块,然后在该板块下的个股列表中,我们就可以直观的看到市盈率低的股票是可以投资的。有的,欢迎关注公众号:Python编程学习圈,或者去编程学习网学习更多编程技术知识,还有海量干货学习资料!