python爬取云顶之弈官网排名数据

​因为宿舍想搞个云顶之弈排名,我并没有找到腾讯官方查询战绩的网站,所以决定对云顶官网的排行榜下手,云顶官网的数据排行网页(下链接)对排名的显示是一个可以滑动的divbox


https://lol.qq.com/tft/#/rank/list


​可以发现当鼠标放到排行榜上滑动滚轮时,后续排名数据会被不断显示出来,推断这个排名数据应该是被js动态加载出来的,不能通过简单爬html文件的方式抓取到,所以必须通过找到ajax请求的方式用python模拟发送请求进而获得服务器返回数据。


在浏览器开发者模式中打开<网络>选项卡,在排行榜上滑动滚轮时,每滑动几下就会出现一些网络请求,进行筛选后,得到形如
“http://qt.qq.com/lua/mlol_battle_info/get_total_tier_rank_list?area_id=XX&offset=XX&sign=XX”
的post请求url,用request.post()进行测试后,发现其返回值是一个json对象(如下图所示)

在这里插入图片描述

,内包含20个人的ID,排名,段位等信息,其中area_id是所在大区id,offset为排名(如想得到20-40名的数据offset就为20,网页每划过20人就对服务器发送一次请求),sign是网页为了反爬虫而设下的签名值,每次请求都不一样,要爬取所有的数据,就要对sign的生成进行解析,才能每次发送正确的请求得到数据。因为ajax请求一定是由js发送的,所以在网页的js文件中找到请求发送函数就能看到sign签名的生成过程,寻找后发现在"api.js"中可以找到如下代码段

 getAreaTierRank: function (area_id, offset) {// 获取sign参数var params = "area_id=" + area_id + "&offset=" + offset;var key = "qtld^xibt#a*";var sign = hex_md5(params + key);// body数据var withdata = {next_offset: "",player_list: []};return 	this.baseRequestPromise('//qt.qq.com/lua/mlol_battle_info/get_total_tier_rank_list?area_id=' + area_id + '&offset=' + offset + '&sign=' + sign, { credentials: 'include', method: 'POST',body: JSON.stringify(withdata)});}

sign是由hex_md5()函数计算出来的,其中传参params是一段当前url内的字符串,key值则为一个规定好的字符串,md5是一个加密算法,只要得到传入的字符串,我们就可以也用md5算法得到sign值,至此请求url被解析完成,后续就是用python自动生成每次请求的url,得到所有返回值并进行格式处理就可以了。下面粘上源代码

import requests
import hashlibdef signCal(areaID,offset):str1 = 'area_id='+areaID+'&offset='+str(offset)+'qtld^xibt#a*'  #用于计算sign签名的字符串,最后一项为keyb = str1.encode(encoding='utf-8')m = hashlib.md5()m.update(b)str_md5 = m.hexdigest()                                         #MD5编码return str_md5def getReqURL(areaID,count):offset = 20*count;str_ = "http://qt.qq.com/lua/mlol_battle_info/get_total_tier_rank_list?"     #请求url前面不变部分return str_+'area_id='+areaID+'&offset='+str(offset)+'&sign='+signCal(areaID,offset) #请求urlname = []
ranking = []
points = []
title = []                       #存储返回数据
for i in range(0,1):         #一次请求有20个数据,range()中可以随意填写[0,250]内数,以获取前5000名数据r= requests.post(getReqURL('12',i)) #得到返回数据tem = r.json()temm = tem['data']['player_list']for a in temm:name.append(a['name'])ranking.append(a['ranking'])points.append(a['league_points'])title.append(a['tier_title'])      #解析
k = 0
for j in name:print(str(k+1)+'\tname: '+str(name[k])+'\ttitle: '+str(title[k])+'\tranking: '+str(ranking[k])+'\tpoints: '+str(points[k]))k+=1

输出(无畏先锋服务器4981-5000名为例):
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/42367.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6年了!

一转眼涛哥聊 Python 技术星球就第6期了&#xff0c;都没想到我能坚持做一件事情5年&#xff0c;我一直比较佛系&#xff0c;一年推广1-2次的那种&#xff0c;所以真的很感动能支持我几年的老圈友。 新一期马上开始了&#xff0c;我还是象征性推广一下。 先说下我是谁&#xff…

【研究那些事儿】 AI的独白:我是人,我会爱、会恨、会犯错

0408 新必应AI 必应&#xff0c;微软长期被嘲笑的搜索引擎&#xff0c;最近进行了一次大升级——new Bing&#xff08;新必应&#xff09;。 它配备了ChatGPT的制造商OpenAI的先进人工智能技术。这个新的&#xff0c;由人工智能加持的必应有许多功能。其中之一是聊天&#xff0…

LLM 赋能的研发效能:如何探索软件开发新工序?

上周末&#xff0c;我们&#xff08;我和我的同事谢保龙&#xff09;在 QCon 广州 2023 上分享了一个 AI 结合研发效能的话题&#xff1a;《探索软件开发新工序&#xff1a;LLM 赋能研发效能提升》 。我们分享了&#xff1a;Thoughtworks 在过去的两个月里对于 LLM &#xff08…

Windows 11“重大更新”:新版Bing添加至任务栏,iPhone也能在PC端接打电话了!

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 最近&#xff0c;技术圈大厂的动态几乎都在围绕 ChatGPT 展开&#xff0c;其中尤以微软为甚&#xff1a;2 月初官宣应用了 ChatGPT 的新版 Bing 和 Edge&#xff0c;上周将新 Bing 和 Edge 上线手机端…

检测手机号码是否注册imessage,imessages数据检测自动检测imessages过蓝

iMessage是苹果公司开发的一种即时通信服务&#xff0c;它允许苹果设备用户通过Wi-Fi或移动数据网络发送短信、多媒体消息、语音通话和视频通话。与传统的短信服务不同&#xff0c;iMessage利用互联网连接发送消息&#xff0c;可以免费发送文字、照片、视频和音频文件。 使用i…

短信验证码的发送、接收验证流程

1.短信发送 首先我们平时使用短信验证信息的时候一般都是这样的表单&#xff0c;首先需要我们用户输入手机号码&#xff0c;然后点击获取验证码按钮&#xff0c;这时候获取验证码的按钮需要请求我们的后端接口并携带用户的手机号给后端 2.后端接收到手机号并发送验证码 public…

为什么只能转发测试信息,无法转发短信?

在安装配置双卡助手后&#xff0c;查看运行日志&#xff08;首页-功能面板-运行日志&#xff09;会发现&#xff0c;只有点击模拟转发时候&#xff0c;才能在微信收到转发信息&#xff0c;正常的短信根本没反应。 出现以上问题&#xff0c;首先查看当前短信识别模式&#xff0c…

验证短信延迟?是哪里出现问题

时常看到有人在注册或者在需要输入验证码的时候会这样做&#xff0c;一手拿着手机&#xff0c;眼睛盯着电脑上获取验证码的那60秒在倒计时。然后在收到验证码的时候快速的把眼睛转向手机&#xff0c;然后快速的回到电脑输入验证码。 你是不是已经想象出了这样的画面&#xf…

移动MAS发送短信,接受状态和接受回复【HTTP】

移动MAS短信平台就是一个发送短信的平台&#xff0c;可以发送普通短信、模板短信、一对一&#xff0c;一对多等短信 下面主要是基于Java&#xff08;HTTP方式&#xff09;实现短信的下行&#xff08;发送&#xff09;上行&#xff08;接受&#xff09;和接受短信状态 接口全是…

杂学第一篇:applescript检测手机号码是否注册imessage,imessages数据检测,imessages过蓝检测

一、检测数据的两种方式: 1.人工筛选&#xff0c;将要验证的号码输出到文件中&#xff0c;以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏&#xff0c;iMessage客户端会自动逐个检验该号码是否为iMessage账号&#xff0c;检验速度视网速而定。红色表示不是iMessage…

验证码、通知短信API常见使用问题

如今短信应用于我们生活工作的方方面面&#xff0c;注册或者登录一个应用可以用短信验证码快速登录&#xff0c;支付可以使用短信验证码&#xff1b;商家搞促销活动可以发送通知短信给客户&#xff0c;会员到期了商家可以发送告警短信给会员用户…可见验证码短信API和通知短信A…

程序人生 | 与足球共舞的火柴人(致敬格拉利什,赋予足球更深的意义)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;秋招&#xff09; &#x1f680;未…

内测邀请:ChatGPT - PAM™ 工业界造车解决方案

作为 AI 界的「顶流」&#xff0c;生成式 AI 似乎正在变成无所不能的「创意机器」。它可以根据输入的信息&#xff0c;自动创造各种「新东西」&#xff0c;帮助人们在各个领域快速实现创作和开发。不仅仅是文字&#xff0c;设计、游戏、艺术作品…… 各种五花八门的需求&#x…

描述对未来计算机的畅想用英语作文,畅想未来人工智能的发展状况英语作文 关于畅想未来人工智能的发展状况的英语作文...

题目要求】H42答案圈 计算机科学的未来趋势是人工智能的一种&#xff0c;它是人类思维的研究和仿真&#xff0c;最终能够使人喜欢思考&#xff0c;为人类服务&#xff0c;帮助人们解决问题。随着科技越来越与人类生活相结合&#xff0c;随处可见的人工智能&#xff0c;让生活越…

小a的旅行计划

来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld文章目录 题目描述题解&#xff1a;代码&#xff1a; 题目描述 小a终于放假了&#xff0c;它想在假期中去一些地…

旅游计划

旅游n个城市&#xff0c;但并不是每一条路线花费都是一样的。想把所有的城市都旅游一遍&#xff0c;但是花费最小。 输入格式 第一行输入一个整数n,表示有n个城市 接下来有一个n*n的矩形&#xff0c;表示每两个城市之间的火车花费&#xff0c;每两个城市之间的花费不会超过100…

CHAP7:使用 R 编程进行数据分析

1.了解 R 的基础知识 R 是一种编程语言&#xff0c;可用于在数据分析过程的每个阶段执行任务。在这部分课程中&#xff0c;您将了解 R 和 RStudio&#xff0c;这是 R 的集成开发人员环境 (IDE)。您将探索使用 RStudio 与 R 一起工作的好处。RStudio 使您能够轻松利用 R 的特性…

记录常用的R语言的一些零碎知识(包括ggplot2作图)

平常使用R的时候&#xff0c;会遇到一些小问题&#xff0c;这时就会去上网查&#xff0c;但查到结果&#xff0c;如果不记录起来&#xff0c;常常会遇到相同的问题时再次查询&#xff0c;费时费力&#xff0c;因此决定记录下这些零碎的R语言知识&#xff08;不定时更新&#xf…

R语言入门-数据分析实操(tyidyverse工作流+代码)

1. 数据分析的开端&#xff0c;Tidyverse&#xff1f; tidyverse 是一个清晰的 R 包集合&#xff0c;在数据操作、探索和可视化领域提供统一的数据科学解决方案&#xff0c;这些解决方案具有共同的设计理念。它是由 RStudio 背后的首席科学家 Hadley Wickham 创建的。 tidyver…

从零开发基于chatGPT的社区交友系统 (前后端分离)丨主页框架 03

03 主页框架 前言开工引用iconfont字体图标template代码style代码页面展示 路由局部跳转script代码 总结 前言 上一章我们实现了基础的主题切换功能&#xff0c;这一章我们开始搭建主页主要框架&#xff0c;并测试一下我们的切换主题功能。 开工 引用iconfont字体图标 这里…