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实现随机选择元素功能
Sep 14 Python
python opencv旋转图像(保持图像不被裁减)
Jul 26 Python
django+echart绘制曲线图的方法示例
Nov 26 Python
django的ORM操作 增加和查询
Jul 26 Python
Python pandas实现excel工作表合并功能详解
Aug 29 Python
python matplotlib拟合直线的实现
Nov 19 Python
Python函数式编程实例详解
Jan 17 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
Jan 25 Python
python脚本监控logstash进程并邮件告警实例
Apr 28 Python
Python模拟登录和登录跳转的参考示例
Oct 30 Python
PyQt5爬取12306车票信息程序的实现
May 14 Python
Python安装使用Scrapy框架
Apr 12 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二分法在IP地址查询中的应用
2008/08/12 PHP
php echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
Vue.js项目模板搭建图文教程
2017/09/20 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
layUI实现三级导航菜单效果
2019/07/26 Javascript
python读取Android permission文件
2013/11/01 Python
Python中实现对list做减法操作介绍
2015/01/09 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
Python中列表与元组的乘法操作示例
2018/02/10 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
python按比例随机切分数据的实现
2019/07/11 Python
python 字符串常用函数详解
2019/09/11 Python
2019史上最全Database工程师题库
2015/12/06 面试题
幼儿教育感言
2014/02/05 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
销售类求职信
2014/06/13 职场文书
药店促销活动策划方案
2014/08/24 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android