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实现HTTP协议下的文件下载方法总结
Apr 20 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
Python编程实战之Oracle数据库操作示例
Jun 21 Python
python获取当前目录路径和上级路径的实例
Apr 26 Python
django一对多模型以及如何在前端实现详解
Jul 24 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
Django重设Admin密码过程解析
Feb 10 Python
Django中modelform组件实例用法总结
Feb 10 Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 Python
Python如何重新加载模块
Jul 29 Python
Python实现视频中添加音频工具详解
Dec 06 Python
Python调用腾讯API实现人脸身份证比对功能
Apr 04 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(6) 面向对象
2010/02/16 PHP
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
2011/09/20 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
js replace 与replaceall实例用法详解
2013/08/03 Javascript
javascript中的Function.prototye.bind
2015/06/25 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
Python requests模块实例用法
2019/02/11 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
英国在线泳装店:Simply Swim
2019/05/05 全球购物
爱与责任演讲稿
2014/05/20 职场文书
文化产业实施方案
2014/06/07 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
2014年作风建设心得体会
2014/10/22 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
Python实战之实现康威生命游戏
2021/04/26 Python
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js