python利用re,bs4,requests模块获取股票数据

 更新时间:2019年07月29日 14:17:28   作者:baagee  
这篇文章主要介绍了python利用re,bs4,requests模块获取股票数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

今天闲来无聊无意间看到了百度股票,就想着用python爬一下数据,于是就找到了东方财经网,结合这两个网站,写了一个小爬虫,数据保存在文件中,比较简单的示例,就当做用来练习正则表达式和BeautifulSoupl了。

首先页面分析,打开东方财经网股票列表页

和百度股票详情页 ,右键查看网页源代码,

网址后面的代码就是股票代码,所以打算先获取股票代码,然后获取详情,废话少说,直接上代码吧:

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 生成多行重复数据的方法实现

    本文主要介绍了Python 生成多行重复数据的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • python搭建微信公众平台

    python搭建微信公众平台

    这篇文章主要介绍了python搭建微信公众平台的相关资料和技巧,感兴趣的朋友可以参考一下
    2016-02-02
  • python如何使用unittest测试接口

    python如何使用unittest测试接口

    这篇文章主要为大家详细介绍了python如何使用unittest测试接口,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • python 项目目录结构设置

    python 项目目录结构设置

    JAVA有标准的maven目录结构,golang也有建议的目录结构,那么我想python是不是也有一个比较好的目录结构组织方式呢
    2020-02-02
  • 10分钟用python搭建一个超好用的CMDB系统

    10分钟用python搭建一个超好用的CMDB系统

    这篇文章主要介绍了10分钟用python搭建一个超好用的CMDB系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 详解如何利用Pytest Cache Fixture实现测试结果缓存

    详解如何利用Pytest Cache Fixture实现测试结果缓存

    这篇文章主要为大家详细介绍了如何利用Pytest Cache Fixture实现测试结果缓存,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-09-09
  • Python Django2 model 查询介绍(条件、范围、模糊查询)

    Python Django2 model 查询介绍(条件、范围、模糊查询)

    这篇文章主要介绍了Python Django2 model 查询介绍(条件、范围、模糊查询),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • python爬虫爬取bilibili网页基本内容

    python爬虫爬取bilibili网页基本内容

    这篇文章主要介绍了python爬虫爬取bilibili网页基本内容,用爬虫爬取bilibili网站排行榜游戏类的所有名称及链接,下面来看看具体的实现过程吧,需要的朋友可以参考一下
    2022-01-01
  • 探索python dask灵活的并行计算库应用场景示例

    探索python dask灵活的并行计算库应用场景示例

    这篇文章主要介绍了探索python dask灵活的并行计算库应用场景示例,Dask 是 Python 中的一个灵活的并行计算库,允许用户利用 CPU 内核的强大功能,对大于内存的数据集执行分布式计算
    2024-01-01
  • 使用__init__.py将文件夹设置成Python模块示例详解

    使用__init__.py将文件夹设置成Python模块示例详解

    这篇文章主要为大家介绍了使用__init__.py将文件夹设置成Python模块示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09

最新评论