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抓取模板之家的CSS模板
Mar 16 Python
Python中的choice()方法使用详解
May 15 Python
Python中shutil模块的学习笔记教程
Apr 04 Python
Python编写一个闹钟功能
Jul 11 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 Python
python通过opencv实现批量剪切图片
Nov 13 Python
Python Learning 列表的更多操作及示例代码
Aug 22 Python
Linux下远程连接Jupyter+pyspark部署教程
Jun 21 Python
django配置app中的静态文件步骤
Mar 27 Python
keras读取h5文件load_weights、load代码操作
Jun 12 Python
Python timeit模块原理及使用方法
Oct 10 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 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中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
FireFox浏览器使用Javascript上传大文件
2013/10/30 PHP
PHP 验证登陆类分享
2015/03/13 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
微信小程序前端promise封装代码实例
2019/08/24 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
python批量生成本地ip地址的方法
2015/03/23 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
学校门卫工作职责
2013/12/07 职场文书
大学生个人求职口试自我评价
2014/02/16 职场文书
机关搬迁方案
2014/05/18 职场文书
工会趣味活动方案
2014/08/18 职场文书
党员个人党性分析材料
2014/12/18 职场文书
总经理司机岗位职责
2015/04/10 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技