python如何爬虫股票数据_简单爬虫:东方财富网股票数据爬取(python_017)
需求:将东方财富网行情中心的股票数据爬取下来,包括上证指数、深圳指数、上证A股、深圳A股、新股、中小板、创业板 等
一、目标站点分析
东方财富网的行情中心页面包含了所有股票信息。在左侧的菜单栏中包含了沪深个股、沪深指数等所有股票数据。每个板块的股票数据被隐藏在不同的菜单里。
点击“沪深个股”按钮,对应的股票数据就被查询出来了。上方的选项卡中包含了不同板块的板块:沪深A股、上证A股、深证A股、新股、中小板...
我们的需求就是将各个选项卡下面的股票数据全部爬取下来,并分别用Excel保存到本地。
首先,通过查看源代码,发现页面上的数据并不是table格式,在源代码中搜索想要的数据并不能直接找到。
所以,老规矩:谷歌或者火狐浏览器 - F12 键,进行抓包分析。看看这些数据是怎么加载出来的。
1、提取url,获取单页数据
点击“js“,直接过滤出js文件,很容易就找到了股票数据。
#沪深A股
url = "http://nufm.dfcfw.com/EM_Finance2014NumericApplication/JS.aspx?cb=jQuery112404462275420342996_1542343049719&type=CT&token=4f1862fc3b5e77c150a2b985b12db0fd&sty=FCOIATC&js=(%7Bdata%3A%5B(x)%5D%2CrecordsFiltered%3A(tot)%7D)&cmd=C._A&st=(ChangePercent)&sr=-1&p=1&ps=20&_=1542343050897"
服务器的访问形式:get。
那么就相对简单了,直接通过requests库的get就可以直接加载数据。
对应的文件数据如下:
提取数据
单只股票的数据都以字符串的形式被存放在“data”下面。可以直接通过正则表达式将data里面的数据提取出来即可。
2、实现翻页
对URL进行分析,控制翻页的参数主要是p参数,所以只要用一个page变量来替代页码,构造新的URL,再通过for循环就能实现提取多页数据。
3、获取不同板块的股票数据
对沪深A股、上证A股、深证A股、新股、中小板...不同板块对URL进行分析,发现对应链接非常相似,唯一对差别是cmd参数。
可以通过构造一个列表或字典,将不同板块对数据一次性提取。
4、将数据保存到本地。
通过导入pandas库,将数据存放在数据框,通过to_excel( )方法保存到本地。
代码执行结果如下:
完整源代码:
'''数据来源:东方财富网-行情中心http://quote.eastmoney.com/center'''
import requests
import re
import pandas as pd
#用get方法访问服务器并提取页面数据
def getHtml(cmd,page):
url = "http://nufm.dfcfw.com/EM_Finance2014NumericApplication/JS.aspx?cb=jQuery112406115645482397511_1542356447436&type=CT&token=4f1862fc3b5e77c150a2b985b12db0fd&sty=FCOIATC&js=(%7Bdata%3A%5B(x)%5D%2CrecordsFiltered%3A(tot)%7D)&cmd="+cmd+"&st=(ChangePercent)&sr=-1&p="+str(page)+"&ps=20"
r = requests.get(url)
pat = "data:\[(.*?)\]"
data = re.compile(pat,re.S).findall(r.text)
return data
#获取单个页面股票数据
def getOnePageStock(cmd,page):
data = getHtml(cmd,page)
datas = data[0].split('","')
stocks = []
for i in range(len(datas)):
stock = datas[i].replace('"',"").split(",")
stocks.append(stock)
return stocks
def main():
cmd = {
"上证指数":"C.1",
"深圳指数":"C.5",
"沪深A股":"C._A",
"上证A股":"C.2",
"深圳A股":"C._SZAME",
"新股":"C.BK05011",
"中小板":"C.13",
"创业板":"C.80"
}
for i in cmd.keys():
page = 1
stocks = getOnePageStock(cmd[i],page)
#自动爬取多页,并在结束时停止
while True:
page +=1
if getHtml(cmd[i],page)!= getHtml(cmd[i],page-1):
stocks.extend(getOnePageStock(cmd[i],page))
#print(i+"已加载第"+str(page)+"页")
else:
break
df = pd.DataFrame(stocks)
#提取主要数据/提取全部数据
#df.drop([0,14,15,16,17,18,19,20,21,22,23,25],axis=1,inplace=True)
columns = {1:"代码",2:"名称",3:"最新价格",4:"涨跌额",5:"涨跌幅",6:"成交量",7:"成交额",8:"振幅",9:"最高",10:"最低",11:"今开",12:"昨收",13:"量比",24:"时间"}
df.rename(columns = columns,inplace=True)
df.to_excel("股票/"+i+".xls")
print("已保存"+i+".xls")
main()
python如何爬虫股票数据_简单爬虫:东方财富网股票数据爬取(python_017)相关推荐
- python爬虫ip限制_简单爬虫,突破IP访问限制和复杂验证码,小总结
简单爬虫,突破复杂验证码和IP访问限制 好吧,看题目就知道我是要写一个爬虫,这个爬虫的目标网站有一些反爬取意识,所以就有了本文了. 我先说说场景吧: 由于工作需要,平时有一大堆数据需要在网上查询,并归 ...
- python 第一行 报错_初学Python-只需4步,爬取网站图片
很多人学习Python很重要的一个原因是,可以很简单的把一个网站的数据爬下来. 尤其是做我们这一行,产品经理,电商行业. 领导:弄一个买卖游戏周边商品的交易APP出来.我:行,那我们卖什么呀?领导:看 ...
- python搜索关键词自动提交_简单爬虫:调用百度接口,实现关键词搜索(python_003)...
需求: 如何用python代码实现百度搜索关键词的功能? 比如输入关键词:"python爬虫",得到一个搜索结果的页面,并保存到本地. 这是经典的python爬虫教学案例之一,也是 ...
- python伪装浏览器什么意思_用python2和python3伪装浏览器爬取网页
python网页抓取功能非常强大,使用urllib或者urllib2可以很轻松的抓取网页内容.但是很多时候我们要注意,可能很多网站都设置了防采集功能,不是那么轻松就能抓取到想要的内容. 今天我来分享下 ...
- Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转)
Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...
- python抓取数据库数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储...
Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...
- python爬虫实现股票数据存储_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储!...
Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...
- python爬虫爬取股票软件数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转载)...
完整代码 实际上,整个事情完成了两个相对独立的过程:1.爬虫获取网页股票数据并保存到本地文件:2.将本地文件数据储存到MySQL数据库.并没有直接的考虑把从网页上抓取到的数据实时(或者通过一个临时文件 ...
- MySQL 怎么插入10天前的日期_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储!...
Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...
最新文章
- ubuntu相关命令
- taobao sass
- linux shell 输出到数据库,linux shell 入门
- {%extends bootstrap/base.html%}的添加,使得其他block无法继承
- c语言递归建链表,递归创建二叉树c语言实现+详细解释
- Nginx访问403异常问题处理
- 怎么扩展磁盘_电脑怎么增加C盘空间 小白教你不花钱增加C盘空间
- 单片机单口不可用或被占用_昆明工业控制单片机应用开发价格
- SVN工作笔记003---svn文件被别人锁定,而那人又把锁定的文件删除了,解锁办法
- RxJava2 方法总结
- 关于Net Core 多平台程序的Framework问题
- 《3D数学基础系列视频》1.2向量的数乘和加减法
- 2020年中国医药冷链物流行业市场现状分析,行业步入发展快车道「图」
- pygame之display模块
- [分享]来自CSDN的精华网址
- WinPE工具箱制作PE系统
- Python实现FP树
- 旷视深度学习框架MegEngine开源
- pythoniris补全缺失值_2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础
- IB中文考试作品比较题分析