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生成器(Generator)详解
Apr 13 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
python实现ping的方法
Jul 06 Python
Python书单 不将就
Jul 11 Python
python 换位密码算法的实例详解
Jul 19 Python
Python抽象和自定义类定义与用法示例
Aug 23 Python
python用类实现文章敏感词的过滤方法示例
Oct 27 Python
django 取消csrf限制的实例
Mar 13 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
jupyter实现重新加载模块
Apr 16 Python
Python道路车道线检测的实现
Jun 27 Python
Python使用永中文档转换服务
May 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
在PHP中使用灵巧的体系结构
2006/10/09 PHP
PHP 事务处理数据实现代码
2010/05/13 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
js直接编辑当前cookie的脚本
2008/09/14 Javascript
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
Python异常学习笔记
2015/02/03 Python
Python中title()方法的使用简介
2015/05/20 Python
浅析Python中else语句块的使用技巧
2016/06/16 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
浅谈three.js中的needsUpdate的应用
2012/11/12 HTML / CSS
Pam & Gela官网:美国性感前卫女装品牌
2018/07/19 全球购物
希腊香水和化妆品购物网站:Parfimo.gr
2019/10/03 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
职业技术学校毕业生推荐信
2013/12/03 职场文书
竞选演讲稿范文
2013/12/28 职场文书
导师评语大全
2014/04/26 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
音乐幼师求职信
2014/07/09 职场文书
银行授权委托书格式
2014/10/10 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript