python如何爬虫股票数据_自学python之爬虫3股票数据爬虫

2023-11-15

目标:获取股票上交所和深交所所有股票的名称和交易信息,保存在文件中

使用到的技术:requests+bs4+re

网站的选择(选取原则:股票信息静态存在HTML页面,非js代码生成没哟robot协议限制)

1. 获取股票列表:http://quote.eastmoney.com/stocklist.html (因为东方财富网站的有全部股票信息的列表,百度股票网站只要个股信息)

2. 获取个股信息:

百度股票:https://gupiao.baidu.com/stock/

单个股票:https://gupiao.baidu.com/stock/sz002939.html

程序的设计结构:

步骤1:从东方财富获取股票列表

步骤2:根据股票列表逐个到百度股票获取个股信息

步骤3:将结果存储到文件

【步骤1】

通过发送请求获取到东方财富网站股票列表信息,查看页面源代码,如下:

938793-20170909135510976-1683410976.png

发现股票代码存储在的href属性中,且上交和深交的股票代码前分别为“sh”和"sz",接下来可以利用这个规律进行解析和匹配。

首先使用BeautifulSoup4获取所有:

soup = BeautifulSoup(html, 'html.parser')

a = soup.find_all('a')

然后配合正则表达式提取的股票代码,并存储在lst列表中:

for i in a:

try:

href = i.attrs['href']

lst.append(re.findall(r"[s][hz]\d{6}", href)[0])

except:

continue

此时列表 lst = ['sh201000' , 'sh201001' , 'sh201002' ...]

【步骤2】

接下来根据获取的股票代码列表,逐个在百度股票获取个股信息。

百度股票个股信息的url:https://gupiao.baidu.com/stock/sz002939.html

因此,先进行url的拼接,然后发送请求获取页面

for stock in lst:

url = 'https://gupiao.baidu.com/stock/' + stock + ".html"

html = getHTMLText(url)

然后进行页面解析,查看源代码

938793-20170909141005007-369125038.png

发现所有的股票信息都存在的

中,然后使用BeautifulSoup进行一步一步的解析

soup = BeautifulSoup(html, 'html.parser')

stockInfo = soup.find('div',attrs={'class':'stock-bets'})

if stockInfo:

name = stockInfo.find_all(attrs={'class':'bets-name'})[0]

infoDict.update({'股票名称': name.text.split()[0]})

else:

print('stockInfo is null')

break

keyList = stockInfo.find_all('dt')

valueList = stockInfo.find_all('dd')

for i in range(len(keyList)):

key = keyList[i].text

val = valueList[i].text

infoDict[key] = val

此时,infoDict = {"成交量":"31.07万手" , "最高":"9.89", "涨停":"10.86" ...}

【步骤3】

最后,把结果输出到文件中:

with open(fpath, 'a', encoding='utf-8') as f:

f.write( str(infoDict) + '\n' )

完整代码如下:

#CrawBaiduStocksA.py

importrequestsfrom bs4 importBeautifulSoupimporttracebackimportre#获取页面的公共方法

defgetHTMLText(url):try:

r=requests.get(url)

r.raise_for_status()

r.encoding=r.apparent_encodingreturnr.textexcept:return "get fail"

#获取股票代码列表

defgetStockList(lst, stockURL):

html=getHTMLText(stockURL)

soup= BeautifulSoup(html, 'html.parser')

a= soup.find_all('a')for i ina:try:

href= i.attrs['href']

lst.append(re.findall(r"[s][hz]\d{6}", href)[0])except:continue

#获取个股信息并输出到文件中

defgetStockInfo(lst, stockURL, fpath):for stock inlst:

url= stockURL + stock + ".html"html=getHTMLText(url)try:if html=="":continueinfoDict={}

soup= BeautifulSoup(html, 'html.parser')

stockInfo= soup.find('div',attrs={'class':'stock-bets'})ifstockInfo:

name= stockInfo.find_all(attrs={'class':'bets-name'})[0]

infoDict.update({'股票名称': name.text.split()[0]})else:print('stockInfo is null')breakkeyList= stockInfo.find_all('dt')

valueList= stockInfo.find_all('dd')for i inrange(len(keyList)):

key=keyList[i].text

val=valueList[i].text

infoDict[key]=val

with open(fpath,'a', encoding='utf-8') as f:

f.write( str(infoDict)+ '\n')except:

traceback.print_exc()continue

defmain():

stock_list_url= 'http://quote.eastmoney.com/stocklist.html' #东放财富股票列表

stock_info_url = 'https://gupiao.baidu.com/stock/' #百度股票信息

output_file = 'D:/BaiduStockInfo.txt' #结果存储的文件

slist=[]

getStockList(slist, stock_list_url)

getStockInfo(slist, stock_info_url, output_file)

main()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python如何爬虫股票数据_自学python之爬虫3股票数据爬虫 的相关文章

  • HuTool 工具类简单使用

    官方文档 https hutool cn docs 简介 Hutool是一个小而全的Java工具类库 通过静态方法封装 降低相关API的学习成本 提高工作效率 使Java拥有函数式语言般的优雅 让Java语言也可以 甜甜的 Hutool中的
  • Python爬虫实战案例——第三例

    文章中所有内容仅供学习交流使用 不用于其他任何目的 严禁将文中内容用于任何商业与非法用途 由此产生的一切后果与作者无关 若有侵权 请联系删除 起点中文网月票榜加密字体处理 字体加密的原理 就是将一种特定的字体库来代替浏览器本身的字体库显示的
  • JeecgBoot页面级联选择框(三种方法)

    JeecgBoot页面级联选择框 三种方法 1 form表单级联选择框 已实践 2 j vxe table联动示例 已实践 3 j editable table三级联动 简单测试 只贴代码 不做过多说明 一 form表单级联选择框 1 1
  • 【Mac】Mac 下安装MySQL优化工具mysqltuner执行报错 [!!] Attempted to use login credentials

    1 背景 base lcc lcc MySQLTuner perl mysqltuner pl socket var lib mysql mysql sock gt gt MySQLTuner 1 7 19 Major Hayden
  • FPGA选型

    原来SG6twotwo FPGA推荐型号0 GX480系列 FPGA推荐型号1 GX570系列 FPGA推荐型号2 GX660系列 SG622 FPGA型号 10AX027 F34 10AX048 10AX057 10AX066 引脚数量
  • postcss_PostCSS简介

    postcss Most developers who spend their time working with CSS are familiar with preprocessors such Less Sass and Stylus
  • [管理与领导-62]:IT基层管理者 - 潜技能 - 1 - 职场中的陷阱 - 了解职场中潜法则,保护自己

    目录 前言 生存法则一 老板对你讲的道理 永远都是对他有利的 生存法则二 目标要明确 拿钱要及时 生存法则三 有点的领导夸你越多 你得到的越少 生存法则四 表面讲大义 心里是生意 生存法则五 得罪人是要付出代价的 生存法则六 别人对你越坏
  • 物理选择题~~好好答哦

    a啊 D
  • 桶排序、计数排序、基数排序 -- 大数据排序,线性排序以及应用场景

    桶排序 桶排序其实就是把数据分到各个桶中 比如把100个数据到10个桶中 然后每个桶再进行排序比如快排 桶和桶之间也是有顺序的 桶排序是线性排序 也就是时间复杂度为O n 假设数据有 n 个 把它们均匀地划分到 m 个桶内 每个桶里就有 k
  • 计算机网络常见面试题总结(一)

    本文主要内容转载自 http blog csdn net jxh 123 article details 40316081 整理一下计算机网络部分的面试常考点 参考书籍 计算机网络 第五版 谢希仁的那本 希望对大家有所帮助 OSI TCP
  • 网站服务器ftp密码设置,服务器 设置ftp密码

    服务器 设置ftp密码 内容精选 换一换 本节操作介绍Linux操作系统云服务器使用重新挂载系统盘的方式重置密码的操作步骤 本文档适用于X86架构的CentOS 7 Ubuntu EulerOS操作系统云服务器 进入单用户模式下重置root
  • Ubuntu18.04安装facebook folly库

    安装步骤 安装boost ubuntu18 04安装的boost有点陈旧 因此自行下载最新版本 执行安装即可 https www boost org 具体步骤直接参考readme 安装gtest wget https github com
  • c语言发牌小程序

    include
  • Windows 2003 Server远程代码执行漏洞集合

    目录 MS08 067 CVE 2017 7269 MS08 067 发布日期 2008 10 22 针对端口 139 445 漏洞等级 高危 漏洞影响 服务器服务中的漏洞可能允许远程执行代码 受影响的操作系统 Windows 2000 X
  • nginx关键字

    对关键字的解释会慢慢加上 master进程 worker进程 pass proxy core Nginx c daemon master process timer resolution pid lock file worker proce
  • 如何正确使用示波器的温度延长线扩展功能

    电子产品的信号测试验证过程中 不可避免地 需要进行高低温工况下的信号完整性测试 但是 目前的高速有源探头的工作温度范围有限不足以直接使用 为此 诸如泰克 是德科技等仪器公司 都有相对应的测试解决方案 基本采用的是 焊接前端 温度延长线 有源
  • 图论17(Leetcode864.获取所有钥匙的最短路径)

    用二进制表示获得的钥匙 假设n 钥匙个数 000000000代表没有钥匙 0000000001代表有idx为1的钥匙 0000000011代表有idx 1 2的钥匙 这方法巧妙又复杂 代码 class Solution static int
  • 补码的求法

    补码 源码取反再加一 eg CAN通信的一部分 1024对应0xfcc 第一种方法 1024二进制 0000010000000000 注意数据类型 需要加上0 取反 1111101111111111 加一 1111110000000000
  • Base64编码相关知识总结

    Base64编码是什么 Base64 顾名思义 就是包括小写字母a z 大写字母A Z 数字0 9 符号 一共64个字符的字符集 另加一个 实际是65个字符 任何符号都可以转换成这个字符集中的字符 这个转换过程就叫做base64编码 Bas

随机推荐