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 相关文章推荐
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
Python 读取某个目录下所有的文件实例
Jun 23 Python
详解python分布式进程
Oct 08 Python
解决python给列表里添加字典时被最后一个覆盖的问题
Jan 21 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
Jul 22 Python
Pytorch基本变量类型FloatTensor与Variable用法
Jan 08 Python
Python基于Tkinter编写crc校验工具
May 06 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
使用Python构造hive insert语句说明
Jun 06 Python
python中对二维列表中一维列表的调用方法
Jun 07 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 Python
Jupyter notebook 更改文件打开的默认路径操作
May 21 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/08/14 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
不得不知的ES6小技巧
2018/07/28 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
python 实现图片批量压缩的示例
2020/12/18 Python
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
无私奉献演讲稿
2014/09/04 职场文书
委托证明书
2014/09/17 职场文书
教师党员个人整改措施
2014/10/27 职场文书
高三英语复习计划
2015/01/19 职场文书
区域销售大会开幕词
2016/03/04 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
漫画「日和酱的要求是绝对的」第3卷封面公开
2022/03/21 日漫
Java Spring读取和存储详细操作
2022/08/05 Java/Android