需求:将东方财富网行情中心的股票数据爬取下来,包括上证指数、深圳指数、上证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)相关推荐

  1. python爬虫ip限制_简单爬虫,突破IP访问限制和复杂验证码,小总结

    简单爬虫,突破复杂验证码和IP访问限制 好吧,看题目就知道我是要写一个爬虫,这个爬虫的目标网站有一些反爬取意识,所以就有了本文了. 我先说说场景吧: 由于工作需要,平时有一大堆数据需要在网上查询,并归 ...

  2. python 第一行 报错_初学Python-只需4步,爬取网站图片

    很多人学习Python很重要的一个原因是,可以很简单的把一个网站的数据爬下来. 尤其是做我们这一行,产品经理,电商行业. 领导:弄一个买卖游戏周边商品的交易APP出来.我:行,那我们卖什么呀?领导:看 ...

  3. python搜索关键词自动提交_简单爬虫:调用百度接口,实现关键词搜索(python_003)...

    需求: 如何用python代码实现百度搜索关键词的功能? 比如输入关键词:"python爬虫",得到一个搜索结果的页面,并保存到本地. 这是经典的python爬虫教学案例之一,也是 ...

  4. python伪装浏览器什么意思_用python2和python3伪装浏览器爬取网页

    python网页抓取功能非常强大,使用urllib或者urllib2可以很轻松的抓取网页内容.但是很多时候我们要注意,可能很多网站都设置了防采集功能,不是那么轻松就能抓取到想要的内容. 今天我来分享下 ...

  5. Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转)

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  6. python抓取数据库数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  7. python爬虫实现股票数据存储_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储!...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  8. python爬虫爬取股票软件数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转载)...

    完整代码 实际上,整个事情完成了两个相对独立的过程:1.爬虫获取网页股票数据并保存到本地文件:2.将本地文件数据储存到MySQL数据库.并没有直接的考虑把从网页上抓取到的数据实时(或者通过一个临时文件 ...

  9. MySQL 怎么插入10天前的日期_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储!...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

最新文章

  1. ubuntu相关命令
  2. taobao sass
  3. linux shell 输出到数据库,linux shell 入门
  4. {%extends bootstrap/base.html%}的添加,使得其他block无法继承
  5. c语言递归建链表,递归创建二叉树c语言实现+详细解释
  6. Nginx访问403异常问题处理
  7. 怎么扩展磁盘_电脑怎么增加C盘空间 小白教你不花钱增加C盘空间
  8. 单片机单口不可用或被占用_昆明工业控制单片机应用开发价格
  9. SVN工作笔记003---svn文件被别人锁定,而那人又把锁定的文件删除了,解锁办法
  10. RxJava2 方法总结
  11. 关于Net Core 多平台程序的Framework问题
  12. 《3D数学基础系列视频》1.2向量的数乘和加减法
  13. 2020年中国医药冷链物流行业市场现状分析,行业步入发展快车道「图」
  14. pygame之display模块
  15. [分享]来自CSDN的精华网址
  16. WinPE工具箱制作PE系统
  17. Python实现FP树
  18. 旷视深度学习框架MegEngine开源
  19. pythoniris补全缺失值_2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础
  20. IB中文考试作品比较题分析

热门文章

  1. 如何通过递归找父节点或子节点详解
  2. windows下安装服务注册Consul
  3. 在现有k8s集群中安装kubesphere时报错:metrics-server failed
  4. kafka高性能揭秘:顺序写和零拷贝
  5. Linux clear指令
  6. zookeeper宏观认识
  7. springboot2.3.x版本对应的spring5与thymeleaf版本配置
  8. 张秋余---经典语录
  9. mongodb 3.4 安装_暴雨免安装中文版下载
  10. python双循环zip_Python 并行遍历zip()函数使用方法