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实现从一组颜色中找出与给定颜色最接近颜色的方法
Mar 19 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
Jan 07 Python
python中获得当前目录和上级目录的实现方法
Oct 12 Python
Python中的defaultdict与__missing__()使用介绍
Feb 03 Python
分享一下Python数据分析常用的8款工具
Apr 29 Python
Python实现决策树C4.5算法的示例
May 30 Python
Python 3.8新特征之asyncio REPL
May 28 Python
python 爬取学信网登录页面的例子
Aug 13 Python
python3 requests库文件上传与下载实现详解
Aug 22 Python
Python OrderedDict的使用案例解析
Oct 25 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
Nov 19 Python
PyQt5通过信号实现MVC的示例
Feb 06 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
PHP5 安装方法
2007/01/15 PHP
php URL编码解码函数代码
2009/03/10 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
2012/12/06 Javascript
JavaScript异步编程:异步数据收集的具体方法
2013/08/19 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
详解Python中for循环的使用方法
2015/05/14 Python
python获取mp3文件信息的方法
2015/06/15 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
2019/04/16 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
python如何从文件读取数据及解析
2019/09/19 Python
Django media static外部访问Django中的图片设置教程
2020/04/07 Python
Django通过json格式收集主机信息
2020/05/29 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
酒吧副总经理岗位职责
2013/12/10 职场文书
机械个人求职信范文
2014/01/24 职场文书
退学证明范本3篇
2014/10/29 职场文书
运动员加油词
2015/07/18 职场文书
妇产科护理心得体会
2016/01/22 职场文书
golang连接MySQl使用sqlx库
2022/04/14 Golang