python利用re,bs4,requests模块获取股票数据


Posted in Python onJuly 29, 2019

今天闲来无聊无意间看到了百度股票,就想着用python爬一下数据,于是就找到了东方财经网,结合这两个网站,写了一个小爬虫,数据保存在文件中,比较简单的示例,就当做用来练习正则表达式和BeautifulSoupl了。

首先页面分析,打开东方财经网股票列表页,

python利用re,bs4,requests模块获取股票数据

和百度股票详情页 ,右键查看网页源代码,

python利用re,bs4,requests模块获取股票数据

网址后面的代码就是股票代码,所以打算先获取股票代码,然后获取详情,废话少说,直接上代码吧:

import re
import requests
from bs4 import BeautifulSoup

#获取html
def getHtml(url):
	try:
		req=requests.get(url)
		req.raise_for_status()
		req.encoding=req.apparent_encoding
		return req.text
	except :
		print('getHtml失败')

#获取股票代码
def getStockList(lst,stockUrl):
	html=getHtml(stockUrl)
	soup=BeautifulSoup(html,'html.parser')
	a=soup.find_all('a')
	for i in a:
		try:
			href=i.attrs['href']
			lst.append(re.findall(r'[s][hz]\d{6}',href)[0])
		except:
			continue

#获取股票详情
def getStockInfo(lst,stockUrl,fpath):
	count=0
	for stock in lst:
		url=stockUrl+stock+'.html'
		html=getHtml(url)
		try:
			if html=='':
				continue
			infoDict={}
			soup=BeautifulSoup(html,'html.parser')
			stockInfo=soup.find('div',attrs={'class':'stock-bets'})
			name=stockInfo.find_all(attrs={'class':'bets-name'})[0]
			infoDict.update({'股票名称':name.text.split()[0]})
			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
			with open(fpath,'a',encoding='utf-8') as f:
				f.write(str(infoDict)+'\n')
				count+=1
				print('\r当前速度:{:.2f}%'.format(count*100/len(lst)),end='')
		except:
			count+=1
			print('\r当前速度e:{:.2f}%'.format(count*100/len(lst)),end='')
			continue


def main():
	stockListUrl='http://quote.eastmoney.com/stocklist.html'
	stockInfotUrl='https://gupiao.baidu.com/stock/'
	outPutFile='D:\python\shuju\stockInfo.txt'
	slist=[]
	getStockList(slist,stockListUrl)
	getStockInfo(slist,stockInfotUrl,outPutFile)

main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python生成指定长度的随机数密码
Jan 23 Python
高性能web服务器框架Tornado简单实现restful接口及开发实例
Jul 16 Python
在Python中操作字典之clear()方法的使用
May 21 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
TensorFlow入门使用 tf.train.Saver()保存模型
Apr 24 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
python实现梯度下降算法
Mar 24 Python
Python实现的特征提取操作示例
Dec 03 Python
Django 缓存配置Redis使用详解
Jul 23 Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
实例详解Python装饰器与闭包
Jul 29 #Python
对于Python深浅拷贝的理解
Jul 29 #Python
PyCharm中代码字体大小调整方法
Jul 29 #Python
python pandas cumsum求累计次数的用法
Jul 29 #Python
详解Python用三种方式统计词频的方法
Jul 29 #Python
Django框架视图层URL映射与反向解析实例分析
Jul 29 #Python
Django 重写用户模型的实现
Jul 29 #Python
You might like
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
php结合ajax实现赞、顶、踩功能实例
2014/05/12 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
js 学习笔记(三)
2009/12/29 Javascript
js单例模式详解实例
2013/11/21 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
js实现拖拽功能
2017/03/01 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
vue+moment实现倒计时效果
2019/08/26 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
python3.6数独问题的解决
2019/01/21 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
全球最大的服务市场:Fiverr
2017/01/03 全球购物
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
心得体会范文
2014/01/04 职场文书
工作态度检讨书
2014/02/11 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
个人四风问题整改措施
2014/10/24 职场文书
社区活动总结
2015/02/04 职场文书
党委工作总结2015
2015/04/27 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android
Win11快速关闭所有广告推荐
2022/04/19 数码科技
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL