爬虫-爬取鼠标悬停显示的数据

数据介绍

以图上网页为例(https://www.tongyeyun.com/topfit/fundExponent/index,需登录账号才能看到),鼠标悬停到网页上,才能显示数据。本人对爬虫接触不多,本以为很麻烦,但是实际爬取下来发现非常简单,爬取及分析过程供大家参考。
在这里插入图片描述

网页分析

进入开发人员工具 - Network - Fetch/XHR,按ctrl+R 重新加载页面,点开左边的加载内容,可以看到Name为listDataForKLine的加载,点开preview可以发现里面有我们想要的数据。
在这里插入图片描述
点开Headers,看到数据具体请求的网址为:https://www.tongyeyun.com/tongyeyunweb/fundsExponent/listDataForKLine,这个网址点开就是从17年开始的全部数据。(这个网页同样需要登录才能打开,说明我们请求的时候需要加cookies)

参数设置

cookies

因为网页比较简单,所以暂时省略了登录步骤,直接使用手动登陆后的cookies。
继续查找Headers - Request Headers,找到cookie参数,保存下来
在这里插入图片描述

post参数

可以看到网页上有四个标签页,全市场/大行/中小行/非银,所以需要看看切换标签页后Network上有啥变化,可以看到,Name为listDataForKLine的连接信息出现了两次,后出现的是切换标签页后的,所以查看两个连接信息的区别,就能找到切换标签页的参数是什么。
查找后发现,两个连接的Headers里请求的网址一致,Request Headers一致,只在Form Data参数有区别,而且第一个全市场的参数是highcharts0,第二个大行是highcharts1,所以变化的参数应该就是POST中data参数。
在这里插入图片描述

import requests
import json
import datetime
import pandas as pd

cookie = {"tongyeyuncong":"xxxxxxxxx",
          "language":"s", 
          "versions":"xxxxxxxxx",
          "loginToken":"xxxxxxxxxx"}

feiyin_formdata = {"type":"highcharts0"} #highcharts0/1/2/3/4分别表示全市场、大行、中小行、非银
url = "https://www.tongyeyun.com/tongyeyunweb/fundsExponent/listDataForKLine"
response = requests.request("POST",url, cookies=cookie, data = feiyin_formdata) 
#response = requests.get(url, cookies=cookie) 增加dataform参数,使用get函数仅能得到全市场的数据,即默认数据。

解析网页

在这里插入图片描述
打开数据网址发现是比较简单的json格式,解析起来比较简单,只要完成request后就可以简单解析。

re_text = json.loads(response.text) #加载response结果
feiyin_data_list = [] #采用list存储
n = len(re_text['obj']['ranges'])
#一天有四个时间点数据,将数据存储为五列:日期-时间点1-时间点2-时间点3-时间点4
for i in range(n):
    day_data = re_text['obj']['ranges'][i]
    datestr = day_data[5] 
    datestrp = datetime.datetime.strptime(datestr, '%Y-%m-%d %H:%M:%S')
    day = datestrp.strftime('%Y-%m-%d') #转化为日期格式
    datalist = [day] + day_data[1:5] 
    feiyin_data_list.append(datalist)
feiyin_data = pd.DataFrame(feiyin_data_list, columns=('日期', '08:45', '10:15', '14:30', '16:00'))

存储的dataframe数据如下:
在这里插入图片描述

小结

网页结构比较简单,供参考,欢迎讨论~

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值