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 Socket使用实例
Dec 18 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
Python爬虫实现(伪)球迷速成
Jun 10 Python
python实现屏保计时器的示例代码
Aug 08 Python
python模块导入的细节详解
Dec 10 Python
python样条插值的实现代码
Dec 17 Python
利用python实现AR教程
Nov 20 Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 Python
Python unittest discover批量执行代码实例
Sep 08 Python
Django celery异步任务实现代码示例
Nov 26 Python
Python使用protobuf序列化和反序列化的实现
May 19 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
cache_lite试用
2007/02/14 PHP
PHP 实例化类的一点摘记
2008/03/23 PHP
php 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
Stop SQL Server
2007/06/21 Javascript
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
Javascript中的isNaN函数使用说明
2011/11/10 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
Python中str is not callable问题详解及解决办法
2017/02/10 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
Python实现的径向基(RBF)神经网络示例
2018/02/06 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
快速创建 HTML5 Canvas 电信网络拓扑图的示例代码
2018/03/21 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
新闻学毕业生自荐信
2013/11/15 职场文书
机修工岗位职责
2013/11/24 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
2014保险公司个人工作总结
2014/12/09 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
孟佩杰观后感
2015/06/17 职场文书
MySQL transaction事务安全示例讲解
2022/06/21 MySQL