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语言的优雅之处
Jul 04 Python
使用python实现tcp自动重连
Jul 02 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
Jul 24 Python
Java及python正则表达式详解
Dec 27 Python
python matplotlib 在指定的两个点之间连线方法
May 25 Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 Python
Python类的继承用法示例
Jan 31 Python
python取余运算符知识点详解
Jun 27 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
Jun 02 Python
python上下文管理器异常问题解决方法
Feb 07 Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
Apr 28 Python
python实现层次聚类的方法
Nov 01 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
人大复印资料处理程序_查询篇
2006/10/09 PHP
Windows下的PHP5.0详解
2006/11/18 PHP
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
php服务器的系统详解
2019/10/12 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
详解获取jq ul第一个li定位的四种解决方案
2016/11/23 Javascript
vue-router路由参数刷新消失的问题解决方法
2017/06/17 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
vue实现选项卡及选项卡切换效果
2018/04/24 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
让Python代码更快运行的5种方法
2015/06/21 Python
django 常用orm操作详解
2017/09/13 Python
pygame实现打字游戏
2021/02/19 Python
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
银行实习生的自我评价
2013/12/09 职场文书
中学自我评价
2014/01/31 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
小学六年级毕业感言
2015/07/30 职场文书
nginx常用配置conf的示例代码详解
2022/03/21 Servers