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中xrange和range的区别
May 13 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
Python实现的网页截图功能【PyQt4与selenium组件】
Jul 12 Python
pyqt5实现俄罗斯方块游戏
Jan 11 Python
对python中类的继承与方法重写介绍
Jan 20 Python
Python使用Pandas库实现MySQL数据库的读写
Jul 06 Python
Python 寻找局部最高点的实现
Dec 05 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
cookies应对python反爬虫知识点详解
Nov 25 Python
Python控制台输出俄罗斯方块移动和旋转功能
Apr 18 Python
Python中可变和不可变对象的深入讲解
Aug 02 Python
Python中非常使用的6种基本变量的操作与技巧
Mar 22 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
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
2019/01/28 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
javascript 寻找错误方法整理
2014/06/15 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
vue filters的使用详解
2018/06/11 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
Python开发编码规范
2006/09/08 Python
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
python中sys.argv参数用法实例分析
2015/05/20 Python
详解Python中的type()方法的使用
2015/05/21 Python
python执行使用shell命令方法分享
2017/11/08 Python
python如何建立全零数组
2020/07/19 Python
python3代码中实现加法重载的实例
2020/12/03 Python
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
10的分与合教学反思
2014/04/30 职场文书
大学班级文化建设方案
2014/05/06 职场文书
副总经理岗位职责
2015/02/02 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
python神经网络ResNet50模型
2022/05/06 Python