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 连连看连接算法
Nov 22 Python
python通过字典dict判断指定键值是否存在的方法
Mar 21 Python
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
May 15 Python
Linux下python制作名片示例
Jul 20 Python
python实现名片管理系统项目
Apr 26 Python
零基础使用Python读写处理Excel表格的方法
May 02 Python
python字典排序的方法
Oct 12 Python
Python中的全局变量如何理解
Jun 04 Python
解决Keras自带数据集与预训练model下载太慢问题
Jun 12 Python
Python字典dict常用方法函数实例
Nov 09 Python
Python使用OpenCV实现虚拟缩放效果
Feb 28 Python
利用Python实时获取steam特惠游戏数据
Jun 25 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
FCKeditor的安装(PHP)
2007/01/13 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
twig里使用js变量的方法
2016/02/05 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
2014/06/06 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
nodejs开发微博实例
2015/03/25 NodeJs
Jquery技巧(必须掌握)
2016/03/16 Javascript
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
ant-design-vue 实现表格内部字段验证功能
2019/12/16 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
全面了解python字符串和字典
2016/07/07 Python
使用tensorflow实现线性回归
2018/09/08 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
a标签下载链接的简单实现
2016/09/13 HTML / CSS
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
学校消防演习方案
2014/02/19 职场文书
英语教师自荐信
2014/05/26 职场文书
个人存款证明书
2014/10/18 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
pytest配置文件pytest.ini的详细使用
2021/04/17 Python