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中用altzone()方法处理时区的教程
May 22 Python
Python简单实现TCP包发送十六进制数据的方法
Apr 16 Python
在Python的Flask中使用WTForms表单框架的基础教程
Jun 07 Python
Python装饰器实现几类验证功能做法实例
May 18 Python
Python逐行读取文件中内容的简单方法
Feb 26 Python
python数组循环处理方法
Aug 26 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
python 通过文件夹导入包的操作
Jun 01 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
Jun 03 Python
用python给csv里的数据排序的具体代码
Jul 17 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
Sep 16 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网站建设的流程与步骤分享
2015/09/25 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
使用jquery为table动态添加行的实现代码
2011/03/30 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
JavaScript程序设计之JS调试
2015/12/09 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
Python随机生成数模块random使用实例
2015/04/13 Python
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
Django ModelForm操作及验证方式
2020/03/30 Python
python自定义函数def的应用详解
2020/06/03 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
python FTP编程基础入门
2021/02/27 Python
大学毕业生的自我鉴定
2013/11/30 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
离职信范文
2015/06/23 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
详解Python自动化之文件自动化处理
2021/06/21 Python
Java 写一个简单的图书管理系统
2022/04/26 Java/Android