python利用re,bs4,requests模块获取股票数据
作者:baagee 发布时间:2022-05-07 05:02:23
标签: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()
来源:https://baagee.vip/index/article/id/85.html


猜你喜欢
- vbscript脚本中,fso对象CreateTextFile方法调用时可能会报“无效的过程调用或参数”错误,在使用ASP生成静态页面时,如
- 在图像裁剪操作中,opencv和pillow两个库都具有相应的函数,但是这两个库中的函数仅仅能对与图片平行的矩形进行裁剪操作,如果想要对目标
- 计是一个输入-输出的过程,因为首先有用户的需求,客户的项目才有设计的产生,设计是带有目的性和市场行为的,当然也有一部分的创造性设计,仅仅为了
- 项目中使用的是vue+element实现的全局loading1.引入所需组件,这里主要就是router和element组件,element组
- 无法远程登入MySQL数据库的几种解决办法方法一:尝试用MySQL Adminstrator GUI Tool登入MySQL Server,
- Oracle数据库开发应用中经常对数据库管理员有这样的需求,对比两个不同实例间某模式下对象的差异或者对比两个不同实例某模式下表定义的差异性,
- 本文实例为大家分享了Python QQBot库的QQ聊天机器人的具体代码,供大家参考,具体内容如下项目地址:https://github.c
- 在浏览几个网页时,发现有几个网站在显示时间时存在问题,比如今天是2009年1月4日,但是有的网站上却赫然写着今天是109年1月4日(这里有个
- 提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Pyth
- 前言本文通过使用 cpu 版本的 tensorflow 2.4 ,介绍三种方式进行加载和预处理图片数据。这里我们要确保 tensorflow
- 动态语句, bulk insert的from &n
- PDO::quotePDO::quote — 为SQL语句中的字符串添加引号。(PHP 5 >= 5.1.0, PECL pdo &g
- list、tuple等都是可迭代对象,我们可以通过iter()函数获取这些可迭代对象的迭代器。然后我们可以对获取到的迭代器不断使⽤next(
- 1 存储过程1.1 什么是存储过程存储过程是一组为了完成某项特定功能的sql语句集,其实质上就是一段存储在数据库中的代码,他可以由声明式的s
- 现在写一篇博客总是喜欢先谈需求或者本内容的应用场景,是的,如果写出来的东西没有任何应用价值,确实也没有实际意义。今天的最早的需求是来自于如何
- 环境:python2.7+django1.91、先下载django-sutipip install django-suit2、配置项目打开s
- 一、所用知识点:1. for循环与if判断的结合2. %s占位符的使用3. 辅助标志的使用(标志位)4. break的使用二、代码示例:
- 如下所示:def list_dict_duplicate_removal(): data_list = [{"a&qu
- Mysql Cluster概述 MySql Cluster最显著的优点就是高可用性,高实时性,高冗余,扩展性强。&n
- 本文实例讲述了JS实现简易图片轮播效果的方法。分享给大家供大家参考。具体如下:这里使用JS制作简易图片轮播效果:制作比较粗糙,使用的图片是w