最近东方财富网更新了网页布局,之前学习量化的时候东方财富网的爬虫失效,于是就重新研究了下。

1.网页分析

在东方财富网改版之前,股票代码数据直接存在网页源码里,获取非常方便。最近改版之后,数据以表格的形式存储在JS文件里。
此前的爬虫版本:

'''输入为html源码,输出为股票代码和名字。'''
'''此前股票代码和名字可从http://quote.eastmoney.com/stocklist.html获取'''
def getStockCode(html):s = r'<li><a target="_blank" href="http://quote.eastmoney.com/(.*?).html">'pat = re.compile(s)code = pat.findall(html)stockname = re.findall(re.compile(r'html">(.*)<\/a>'),html)return code,stockname

现在输入http://quote.eastmoney.com/stocklist.html会直接跳转到http://quote.eastmoney.com/center/gridlist.html#hs_a_board,如图:

而表格数据经查看发现是存储在JS文件里,用右键检查查看详情:

点headers看JS的URL,如下:

http://nufm.dfcfw.com/EM_Finance2014NumericApplication/JS.aspx?cb=jQuery112405185680506907513_1554430646828&type=CT&token=4f1862fc3b5e77c150a2b985b12db0fd&sty=FCOIATC&js=({data%3A[(x)]%2CrecordsFiltered%3A(tot)})&cmd=C.A&st=(ChangePercent)&sr=-1&p=1&ps=20&=1554430647075

稍作测试便知,&p=1&ps=20为标明股票数,这里可以直接把后面的20改为3169(A股股票总数);&=1554430647075是UNIX时间戳,可以去掉;
最后访问如下URL即可:http://nufm.dfcfw.com/EM_Finance2014NumericApplication/JS.aspx?&type=CT&token=4f1862fc3b5e77c150a2b985b12db0fd&sty=FCOIATC&cmd=C._A&st=(ChangePercent)&sr=-1&p=1&ps=3169

2.代码

import requests
import json
import pandas as pd
import numpy as np
url = r'http://nufm.dfcfw.com/EM_Finance2014NumericApplication/JS.aspx?&type=CT&token=4f1862fc3b5e77c150a2b985b12db0fd&sty=FCOIATC&cmd=C._A&st=(ChangePercent)&sr=-1&p=1&ps=3169'html = requests.get(url)
html = html.textstock = re.findall(re.compile('\((.*)\)'),html)
stock = stock[0]
stock = stock.split('","')stock[0] = stock[0][2:]
stock[-1] = stock[-1][:-2]
stock_data = []
for i,item in enumerate(stock):t = item.split(',')stock_data.append(t)print(stock_data)

以上为获取表格数据的代码,由于获取的数据的格式混乱,需要进行一定处理,最终存储到csv文件中,代码如下:

columns = ['交易所','股票代码','股票名字','当前股价','涨跌额','涨跌幅','成交量(手)','成交额','振幅','最高','最低','今开','昨收','5分钟涨跌','量比','换手率','市盈率','市净率','总市值','流通市值','60日涨跌幅','年初至今涨跌幅','涨速','上市时间','数据时间','成交量']
data = pd.DataFrame(stock_data,columns = columns)
#data.head().Tcolumns = ['交易所','当前股价', '涨跌额', '涨跌幅', '成交量(手)', '成交额', '振幅','最高', '最低', '今开', '昨收', '5分钟涨跌', '量比', '换手率',  '市净率', '总市值', '流通市值','成交量']
data[columns] = data[columns].astype(np.float64)data['市盈率'] = data['市盈率'].apply(lambda x:None if x == '-' else x)
data['市盈率'] = data['市盈率'].astype(np.float64) data['上市时间'] = pd.to_datetime(data['上市时间'],format= '%Y-%m-%d')
data['数据时间'] = pd.to_datetime(data['数据时间'],format= '%Y-%m-%d %H:%M:%S')data['60日涨跌幅'] = data['60日涨跌幅'].str.strip("%").astype(float)/100
data['年初至今涨跌幅'] = data['年初至今涨跌幅'].str.strip("%").astype(float)/100data['涨速'] = data['涨速'].apply(lambda x:None if x == '-' else x)
data['涨速'] = data['涨速'].astype(np.float64)data['交易所_'] = data['交易所'].apply(lambda x:'沪市' if x == 1 else '深市' )
data.to_csv('stock-A.csv')

最后,看下效果:

东方财富网新版A股数据爬取相关推荐

  1. 用python爬虫爬取东方财富网信息网页信息_爬取东方财富网数据的网页分析

    自学Python已有3个月之多,浏览无数大神的佳作,收获颇丰.当初自学python就是为了学习爬虫,爬取网站上好看妹子的图片--[流口水][流口水] 言归正传,近期学习量化交易知识,发现东方财富网(e ...

  2. Python爬虫之网易云歌单音频爬取(解决urlretrieve爬取文件不能播放问题)

    网易云歌单音频爬取 写在前面:最近学习爬虫,对小说和图片都进行过简单爬取,所以打算爬取音频,但是其中遇到点问题也解决了,写下博客记录并希望对大家也有帮助. 爬取对象:对于目前主流的几个音频播放网站,我 ...

  3. python-东方财富网贴吧评论数据爬取

    python-东方财富网贴吧文本数据爬取 分享一下写论文时爬数据用到的代码,有什么问题或者改善的建议的话小伙伴们一起评论区讨论. def getzssz399001DATA(x,y): #爬取x至y页 ...

  4. Python网易云音乐单曲爬取

    Python网易云音乐单曲爬取 代码: import requests import osdef develop(path,url):song_url = urlsong_id = song_url[ ...

  5. 东方财富:网址和项目名称爬取

    平安银行(000001)资金流向 _ 数据中心 _ 东方财富网 (eastmoney.com) #导包 import requests from bs4 import BeautifulSoup im ...

  6. 百度网盘爬虫(如何爬取百度网盘)

    因为要做去转盘网(分类模式点我),所以一定要爬取网盘资源,本来想自己写一个爬虫挺不容易的,不想分享出来,但最后还是决定了拿给大家一起看吧,毕竟有交流才有进步,有兴趣的朋友也可以看看我写的其他日志或者关 ...

  7. 网易云音乐用户信息爬取以及可视化

    选的课程方向是爬取网易云音乐某首歌曲的用户评论内容和评论时间,观察每天哪个时间段的评论信息最多,每周哪天的评论信息最多.然后分析该歌曲的用户性别分布和年龄分布.所以首先需要通过爬虫来爬取评论信息和用户 ...

  8. 猫眼网历史日票房数据爬取

    文章目录 前言 一.分析猫眼网榜单网页和票房明细网页 二.使用步骤 1.引入库 2.获取并分析源码函数 3.主函数部分 若需要额外的榜单外的电影,可以直接去猫眼查询电影名称, 然后查看网页源码,使用c ...

  9. 金融爬虫python网贷_爬虫之爬取网贷之家在档P2P平台基本数据并存入数据库

    python 版本 :3.5.2 Jupyter Notebook 使用库: reuqests (For human) json (用来加载JSON数据) datetime (用来记录抓取所花时间,也 ...

最新文章

  1. rs232读取智能电表_老王说表之--快速查看家里电表读数的方法
  2. NAT 及 NAT 打洞技术
  3. 学习 launch-editor 源码整体架构,探究 vue-devtools「在编辑器中打开组件」功能实现原理...
  4. mmap无血缘关系进程间通信
  5. 2007 Office System Beta2 Technical Refresh 下载
  6. vue-cli构建的项目手动添加eslint配置
  7. Linux搜狗输入法候选词乱码
  8. xml没有提示解决办法eclipse
  9. hprof文件分析工具_应用稳定性优化系列(三),资源泄露问题分析及定位
  10. Caused by: java.lang.NumberFormatException: For input string: 18446744073709551615
  11. 一、传统应用带来的问题
  12. 蚂蚁金服技术专家:mPaaS是如何打造“最懂用户”的App的?
  13. 【lvgl 学习】怎么让LVGL支持GBK编码
  14. pop3协议auth指令总结
  15. js表单验证 - 数字
  16. js 闭包传参_javascript深入理解js闭包
  17. axios 上传文件 封装_axios 封装上传文件的请求方法
  18. 关于免费域名和空间搭建个人网站——服务器篇
  19. 转 localStorage
  20. python斐波那契数列第四十项_科学网—不死神兔的繁衍生息——神奇的斐波那契数列 - 霍开拓的博文...

热门文章

  1. 2021华为工程师的java自学建议
  2. 程序员编程艺术pdf
  3. 理科女生学计算机好还是财经好,女生理科选什么专业好就业
  4. vue antvG6树图的摸索总结—新手入门
  5. Unity Shader关于uv动画和定点动画的个人浅见
  6. 基于java蔬菜销售系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  7. Bowers Wilkins(宝华韦健)发布全新真无线蓝牙耳机
  8. MySQL数据库命令行【篇章十】之视图的创建与管理(create or replace+alter+drop view)
  9. 泰坦尼克事件的生还研究
  10. Elasticsearch:Dynamic templates