爬取东方财富网当日股票交易情况

爬取东方财富网当日股票交易情况

爬虫的第一步是得到数据的存放地址,因此,爬取股票行情数据之前,第一步工作是解析网页,寻找数据的url。

东方财富网股票行情界面如图:
在这里插入图片描述此页面的链接为:http://quote.eastmoney.com/center/gridlist.html#hs_a_board
在浏览器地址栏内输入此链接可以正常访问,但是通过requests库请求并没有得到关于股票行情的数据,这可能是由于网站为了方便维护,把数据储存在json对象中,方便修改,有此假设,在任意股票上右击查看源码:
在这里插入图片描述
通过搜索某一只股票的名称,找到对应的地址,所有股票的信息都保存在了这个链接指向的对象中:
url:http://98.push2.eastmoney.com/api/qt/clist/get?cb=jQuery1124034962033822322613_1582007856997&pn=1&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:13,m:0+t:80,m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1582007856998
粘贴到地址栏,我们发现,返回了20条股票信息,查看url的组成,存在一项“pz=20”的句子,大胆猜测这表示返回20条信息,如果改成20000是否会返回更多数据呢?
尝试后,确实如假设所想,返回了3912条股票数据(沪深A股总的数量),至此,我们得到了数据的存放地址,通过requests库可以直接返回json数据,这实在是太方便了。

2、获取数据:

import requests,re,json
from bs4 import BeautifulSoup
import pandas as pd

#指定连接
url = r'http://21.push2.eastmoney.com/api/qt/clist/get?cb=jQuery112407201580659678162_1581950914193&pn=1&pz=20000&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:13,m:0+t:80,m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1581950914194'
#定义请求头
headers = {'UserAgent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36'}
#获取数据
html=requests.get(url,headers = headers)

3、清洗数据,保存到excel
在这里插入图片描述
查看返回的信息,发现我们需要的数据储存在"diff"这个列表中,或者说是在json数据的第6个元素中,但是与干净的json数据不同,这里前多了42个字符,后多了2个字符,因此需要删除多余字符。

#提取json数据
jsons = html.text[42:][:-2]
#将正确格式的str格式转为json格式
text_json = json.loads(jsons)
#利用pandas储存数据到excel
pd.DataFrame((text_json['data']['diff'])).to_excel(r'Path\abc.xlsx')

4、查看结果在这里插入图片描述
初步的结果如上图所示,标题并不直观,需要重新定义,因此,在东财网站中检查“名称”这一项的源码,可以找到各“fxx”的含义,而且通过重新定义请求链接,我们可以控制返回数据的类型,也即:删除不需要的列。
标题行数据的储存地址:http://quote.eastmoney.com/center/js/gridlist3.min.js?v=200115170204531&v=ckdJ099tmGa5K6pqPzMnueRq_2nTrq8DkG9r0SZ0xtg
按照json格式解析后,可以得到:
在这里插入图片描述
上图是标题行代码的含义(fxx),按照此表查询可以定制请求链接,按照需求返回股票信息。

最终经过整理,得到Excel如图:
在这里插入图片描述

至此完成了东财网站的每日股票交易数据的爬取过程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值