分享好友 最新动态首页 最新动态分类 切换频道
Python爬虫实战:股票数据定向爬虫
2024-12-25 17:12

股票信息静态存在于html页面中,非js代码生成,没有Robbts协议限制,打开网页,查看源代码,搜索网页的股票价格数据是否存在于源代码中。

功能简介

  • 目标: 获取上交所和深交所所有股票的名称和交易信息。
  • 输出: 保存到文件中。
  • 技术路线: requests—bs4–re
  • 语言:python3.5

说明

  • 网站选择原则: 股票信息静态存在于html页面中,非js代码生成,没有Robbts协议限制。
  • 选取方法: 打开网页,查看源代码,搜索网页的股票价格数据是否存在于源代码中。

如打开新浪股票网址:链接描述(http://finance.sina.com.cn/realstock/company/sz000877/nc.shtml),如下图所示

上图中左边为网页的界面,显示了天山股份的股票价格是13.06。右边为该网页的源代码,在源代码中查询13.06发现没有找到。所以判断该网页的数据使用js生成的,不适合本项目。因此换一个网页。

再打开百度股票的网址:链接描述(https://gupiao.baidu.com/stock/sz300023.html),如下图所示

从上图中可以发现百度股票的数据是html代码生成的,符合我们本项目的要求,所以在本项目中选择百度股票的网址。

由于百度股票只有单个股票的信息,所以还需要当前股票市场中所有股票的列表,在这里我们选择东方财富网,网址为:链接描述(http://quote.eastmoney.com/stocklist.html),界面如下图所示

原理分析

查看百度股票每只股票的网址:https://gupiao.baidu.com/stock/sz300023.html,可以发现网址中有一个编号300023正好是这只股票的编号,sz表示的深圳交易所。因此我们构造的程序结构如下

  • 步骤1: 从东方财富网获取股票列表;
  • 步骤2: 逐一获取股票代码,并增加到百度股票的链接中,***对这些链接进行逐个的访问获得股票的信息;
  • 步骤3: 将结果存储到文件。

接着查看百度个股信息网页的源代码,发现每只股票的信息在html代码中的存储方式如下

因此,在我们存储每只股票的信息时,可以参考上图中html代码的存储方式。每一个信息源对应一个信息值,即采用键值对的方式进行存储。在python中键值对的方式可以用字典类型。因此,在本项目中,使用字典来存储每只股票的信息,然后再用字典把所有股票的信息记录起来,***将字典中的数据输出到文件中。

代码编写

首先是获得html网页数据的程序,在这里不多做介绍了,代码如下

复制

 

接下来是html代码解析程序,在这里首先需要解析的是东方财富网页面:链接描述(http://quote.eastmoney.com/stocklist.html),我们打开其源代码,如下图所示

由上图可以看到,a标签的href属性中的网址链接里面有每只股票的对应的号码,因此我们只要把网址里面对应股票的号码解析出来即可。解析步骤如下

***步,获得一个页面

复制

 

第二步,解析页面,找到所有的a标签

复制

 

第三步,对a标签中的每一个进行遍历来进行相关的处理。处理过程如下

1.找到a标签中的href属性,并且判断属性中间的链接,把链接后面的数字取出来,在这里可以使用正则表达式来进行匹配。由于深圳交易所的代码以sz开头,上海交易所的代码以sh开头,股票的数字有6位构成,所以正则表达式可以写为[s][hz]d{6}。也就是说构造一个正则表达式,在链接中去寻找满足这个正则表达式的字符串,并把它提取出来。代码如下

复制

 

2.由于在html中有很多的a标签,但是有些a标签中没有href属性,因此上述程序在运行的时候出现异常,所有对上述的程序还要进行try…except来对程序进行异常处理,代码如下

复制

 

从上面代码可以看出,对于出现异常的情况我们使用了continue语句,直接让其跳过,继续执行下面的语句。通过上面的程序我们就可以把东方财富网上股票的代码信息全部保存下来了。

将上述的代码封装成一个函数,对东方财富网页面解析的完整代码如下所示

复制

 

接下来是获得百度股票网链接描述(https://gupiao.baidu.com/stock/sz300023.html)单只股票的信息。我们先查看该页面的源代码,如下图所示

股票的信息就存在上图所示的html代码中,因此我们需要对这段html代码进行解析。过程如下

1.百度股票网的网址为:https://gupiao.baidu.com/stock/

一只股票信息的网址为:https://gupiao.baidu.com/stock/sz300023.html

所以只要百度股票网的网址+每只股票的代码即可,而每只股票的代码我们已经有前面的程序getStockList从东方财富网解析出来了,因此对getStockList函数返回的列表进行遍历即可,代码如下

复制

 

2.获得网址后,就要访问网页获得网页的html代码了,程序如下

复制

 

**3.获得了html代码后就需要对html代码进行解析,**由上图我们可以看到单个股票的信息存放在标签为div,属性为stock-bets的html代码中,因此对其进行解析

复制

 

4.我们又发现股票名称在bets-name标签内,继续解析,存入字典中

复制

 

split()的意思是股票名称空格后面的部分不需要了。

**5.我们从html代码中还可以观察到股票的其他信息存放在dt和dd标签中,**其中dt表示股票信息的键域,dd标签是值域。获取全部的键和值

复制

 

并把获得的键和值按键值对的方式村放入字典中

复制

 

6.***把字典中的数据存入外部文件中

复制


最新文章
小程序开发一个多少钱?可以更新迭代商城小程序费用参考!
商城类的小程序,整体上费用在1000~9000元不等。商城类小程序,当然也存在9.9元~300元左右报价,甚至在一些社交媒体平台上有人“热心肠”免费帮忙制作、全年免费帮忙维护和搭建,背后实则暗藏欺诈和套路。在2024年制作一个小程序,开源节流
主营产品:VOCs在线监测、环境在线监测系统、TSP在线检测仪、VOCs超标报警仪
  成都环境在线监测系统PM2.5臭氧浓度实时检测根据国家环境部门发布的《环境信息zui网络建设规范》(HJ460-2009)、《环境保护应用软件开发管理技术规范》(HJ622-2011)、《污染源在线自动监控监测系统数据传输标准2122005》、《环境污
百度蜘蛛池租用:最新百度蜘蛛池收录策略解析,提升网站流量与排名的秘诀
百度蜘蛛池租用解析:掌握最新收录策略,优化网站流量与排名。本内容深度剖析蜘蛛池租用技巧,助您高效提升网站在百度搜索中的表现。本文目录导读:了解百度蜘蛛池最新百度蜘蛛池收录策略监测与调整随着互联网的飞速发展,搜索引擎优化(SE
华为MateXs2什么时候上市?华为MateXs2上市时间及价格介绍
华为MateXs2新款折叠屏手机即将上市,那么它的价格是多少呢,上市时间是什么时候呢?现在让小编来给大家详细的介绍一下吧,感兴趣的朋友可以来看看哦,希望能够帮助到大家!华为matexs2这款手机的最低价格将会在16999元起售,符合华为一贯
首先文献管理我给大家推荐三个软件,也是我自己一直在用的,尤其是Zotero和小绿鲸真的用起来超级方便。
大家好!我是le。前面我发了推文研究生最常用的工具推荐,受到了大家的好评,研究生最常用的科研工具推荐,但是也有好多同学留言说是不是很齐全,所以本期我推出最全版本。包含了在科研过程中可能用到的各种工具,希望对大家的学术研究工作
t3特惠车主 2.15.0 更新:2024-12-12备案号:苏ICP备19021948号-3A
t3特惠车主,一般又称T3车主app,t3特选车主app。T3出行是一汽、东风、长安三大国企联合腾讯、阿里等多方知名企业联合投资打造的智慧出行生态平台。我们以“成为值得信赖的出行服务企业”为愿景,以“科技引领 愉快出行”为使命,为网约车司
值得一试的8个最佳AI写代码工具
生成式人工智能为许多新的创新和AI工具打开了闸门。从人工智能图像生成到人工智能编码助手,有太多的东西需要解读,而且我们每天都在学习新的应用。在本文中,我们将专门讨论可以帮助您进行软件开发的人工智能编码工具。您可以使用下面列出
用AI绘画生成超逼真美女写真,跟我一起体验科技之美!
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 是否曾幻想过,只需轻轻一点,就能得到一张美丽的女友写真?今天,家人们,我要和大家聊聊如
销售心理学读后感
销售心理学读后感(通用10篇)  细细品味一本名著后,相信大家都有很多值得分享的东西,是时候写一篇读后感好好记录一下了。那么你真的会写读后感吗?以下是小编精心整理的销售心理学读后感,欢迎大家借鉴与参考,希望对大家有所帮助。 
这组雪中红梅图,太美了,养眼养心!
在雪花纷飞的世界里,这点点绽放在枝头的红梅,着实美得动人心魄,那傲雪凌霜的姿态真让人忍不住由衷赞叹,大自然竟然能绘就如此这般绝美的景致。。。下面,我们在欣赏美图的同时娱乐一下,让智能AI根据我们输入的雪中红梅图,创作一首打油
相关文章
推荐文章
发表评论
0评