爬取全国大学排名--数据保存在js文件中的处理办法

news2024/10/6 18:32:09

网页链接:【软科排名】2023年最新软科中国大学排名|中国最好大学排名

点击xhr后发现数据不存在,在搜索框(尽量搜索数字和字母)搜索,发现数据在js文件中,这是一个JSONP的格式,相对于json的格式

 

 

对js文件进行分析, 它定义了一个函数__NUXT_JSONP__,控制台中复制,发现其为一个函数,点击进入另一个js文件

在re处打上断点,刷新网站,继续执行脚本得到

 

此时的t

代码操作:

import execjs
import requests
import re

url = "https://www.shanghairanking.cn/_nuxt/static/1706099724/rankings/bcur/2023/payload.js"
response = requests.get(url=url).text
data = re.findall('__NUXT_JSONP__\("/rankings/bcur/2023",(.*?)\);',response)[0]
result = execjs.eval(data)
univData = result['data'][0]['univData']
i = 1
for univ in univData:

    univNameCn = univ['univNameCn']
    univNameEn = univ['univNameEn']
    univTags = '/'.join(univ['univTags'])
    province = univ['province']
    univCategory = univ['univCategory']
    score = univ['score']
    print(i,univNameCn,univNameEn,univTags,province,univCategory,score)
    i+=1

 execjs.eval()和call方法的区别如下:

功能:

execjs.eval():用于执行一段JavaScript代码并返回结果。
call方法:通常用于调用JavaScript对象的方法或函数。
用法:

execjs.eval():接受一个JavaScript代码作为参数,并返回执行结果。
call方法:作为JavaScript对象的一个方法,用于调用该对象的方法或函数。通常需要指定调用的方法名,并传递相应的参数。
适用场景:

execjs.eval():适用于在Python中执行JavaScript代码,例如需要动态执行一些JavaScript逻辑或计算。
call方法:适用于在JavaScript中调用对象的方法或函数,例如调用一个对象的成员方法来完成某项操作。
总的来说,execjs.eval()主要用于在Python中执行JavaScript代码,而call方法用于JavaScript对象内部的方法调用。它们在功能和用法上有所不同,根据具体的需求选择合适的方法。

JSONP(JSON with Padding)是一种在网页端通过动态创建 <script> 标签实现跨域请求的方法。由于浏览器的同源策略限制了通过 XMLHttpRequest 对象进行跨域请求,JSONP 就应运而生,它允许从不同域的服务器上请求数据,实现了跨域访问。

JSONP 的原理是利用 <script> 标签没有跨域限制的特点,动态创建一个 <script> 标签,其 src 属性指向目标服务器上的一个接受回调函数参数的 URL。目标服务器在接收到请求后,会将数据包装在一个函数调用中返回,该函数即为前端事先定义好的回调函数。因为返回的是 JavaScript 代码,而不是 JSON 数据,所以可以绕过同源策略的限制。最终,数据会作为参数传递给前端定义的回调函数,从而实现了跨域数据的获取和处理。

JSONP 回调函数就是在 JSONP 请求中定义的用于处理返回数据的 JavaScript 函数。通常情况下,JSONP 请求的 URL 中会有一个参数用来指定回调函数的名称,例如 callback=handleResponse,那么目标服务器在返回数据时,会将数据包装在 handleResponse 函数中,以便在前端接收到响应后调用该函数来处理数据。

 

结果展现:

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ButterKnife实现之Android注解处理器使用教程

ButterKnife实现之Android注解处理器使用教程 1、新建一个注解 1.1、编译时注解 创建注解所需的元注解Retention包含3个不同的值&#xff0c;RetentionPolicy.SOURCE、RetentionPolicy.CLASS、RetentionPolicy.RUNTIME。这3个值代表注解不同的保留策略。 使用RetentionPolic…

3月6日

英语 微机原理 硬件中断由 硬件产生 软件中断由软件提供 硬件是随机的 软件是已知的 硬件通常使用类型码 软件是不需要的 硬件的NMI 和 INTR 引脚 无条件 简单外设 查询 CPU效率不高 需要外设提供状态口 中断 需要外设向CPU发送中断请求具有发送中断请求的能力 同时要发送类型…

PandasPython 笔记1 3.5

一般这两个东西相互配合使用 pd.Series 若没有给定行和列的话&#xff0c;就会自动给0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4 describe 只能描述数字&#xff0c;不可以描述字符串 ascendingfalse&#xff1a;倒序 一般的截取方式 特定的选取方式 有这三…

Vue-04

Vue 指令 指令补充 指令修饰符&#xff1a;通过"."指明一些指令后缀&#xff0c;不同后缀封装了不同的处理操作 → 简化代码 按键修饰符 keyup.enter → 键盘回车监听 在input中使用keyup.enter&#xff0c;这个时候按enter键也能实现添加&#xff0c;和点击按钮实…

(二) 数据库系统的结构抽象与演变

2.1三层模式与两层映像&#xff0c;物理独立性和逻辑独立性 从数据角度可以分为三层视图模式默认指的是全局模式&#xff0c;视图默认指的是外部视图 一个数据库只有一个内模式 DBMS要让用户定义三层模式&#xff0c;程序自动地实现两层映像 。 从外部视图到外模式的数据结构的…

chrome 浏览器只有开启clash 才能上网请求

最近重装了chrome 浏览器&#xff0c;发现只有开着clash才能正常访问网络&#xff0c;关了就无法访问网站。 原因在于浏览器的DNS配置出了问题 现象如下&#xff1a; 出问题的设置&#xff1a; 解决&#xff1a; 把DNS提供商改成系统默认&#xff0c;或者直接把对您访问的网…

网络原理初识(1)

目录 一、网络发展史 1、独立模式 2、网络互联 3、局域网LAN 局域网组建的方式 1、基于网线直连 2、基于集线器组建 3、基于交换机组建 4、基于交换机和路由器组建 4、广域网WAN 二、网络通信基础 1、IP地址 2、端口号 3、认识协议 4、五元组 一、网络发展史 1、独立模式 …

MySQL·SQL优化

目录 一 . 前言 二 . 优化方法 1 . 索引 &#xff08;1&#xff09;数据构造 &#xff08;2&#xff09;单索引 &#xff08;3&#xff09;explain &#xff08;4&#xff09;组合索引 &#xff08;5&#xff09;索引总结 2 . 避免使用select * 3 . 用union all代替u…

Linux第69步_依据“旧字符设备的一般模板”编写LED驱动

在编写LED驱动之前&#xff0c;先要了解和硬件有关的一些知识。 1、了解“MMU内存管理单元”以及相关函数 MMU是Memory Manage Unit的缩写&#xff0c;意思是“内存管理单元”。 老版本的Linux内核要求处理器必须有“MMU内存管理单元”&#xff0c;而现在的Linux内核已经支持…

【Linux】常见指令1(ls指令、pwd指令、cd指令、touch指令、mkdir指令、rmdir指令、man指令、cp指令、mv指令、cat指令)

目录 01.ls指令与ll指令 02.pwd指令 03.cd指令 04.touch指令 05.mkdir指令 06.rmdir指令&&rm指令 07.man指令 08.cp指令 09.mv指令 10.cat指令 01.ls指令与ll指令 ls指令&#xff1a; 原型&#xff1a;list directory contents 语法&#xff1a;ls[选项][目录…

单片机的boot升级和双备份升级

同时boot升级还会有一个策略来防止单片机变成砖&#xff1a;就是boot的升级程序写在boot中&#xff0c;这个部分的的升级程序是不会改动的&#xff0c;如果检测到升级失败&#xff0c;会一直等待&#xff0c;直到升级正确的程序

二维码门楼牌管理系统应用场景:城市规划与土地管理的新利器

文章目录 前言一、城市规划部门的新助手二、门牌数据的深度应用三、支持可持续城市发展四、与城市规划部门的联动 前言 随着科技的不断进步&#xff0c;二维码技术已经深入到我们生活的方方面面。在城市规划与土地管理领域&#xff0c;二维码门楼牌管理系统正成为一项革命性的…

2024-3-5 python 序列小知识点

1、for循环的变量作用域不限于for循环内 >>>i 10 >>>for i in range(100): >>> print(i) >>> i 100此处&#xff0c;for循环里的 i 修改了之前的 i 变量的值。 2、列表推导式里的变量作用域仅限于推导式内 推导式犹如一个函数&…

96道前端面试题,前端开发工作内容

HTML、CSS、JS三大部分都起什么作用&#xff1f; HTML内容层&#xff0c;它的作用是表示一个HTML标签在页面里是个什么角色&#xff1b;CSS样式层&#xff0c;它的作用是表示一块内容以什么样的样式&#xff08;字体、大小、颜色、宽高等&#xff09;显示&#xff1b;JS行为层…

亚信安慧AntDB的全方位支持力

AntDB以持续创新和技术进步为理念&#xff0c;不断优化性能和功能&#xff0c;至今已经保持了15年的平稳运行。这一漫长的历程并非偶然&#xff0c;而是源于AntDB团队对技术的不懈探索和追求。他们始终秉承着“永不停歇&#xff0c;永不满足”的信念&#xff0c;将技术创新作为…

java-ssm-jsp-大学社团管理系统

java-ssm-jsp-大学社团管理系统 获取源码——》公主号&#xff1a;计算机专业毕设大全

小白宝藏的制作产品画册的平台

​随着市场竞争的日益激烈&#xff0c;越来越多的企业开始注重品牌形象的塑造和产品宣传。在这个过程中&#xff0c;制作产品画册成为了许多企业的首选方式。然而&#xff0c;传统的制作方式不仅耗时耗力&#xff0c;而且效果往往不尽如人意 那么有没有好的方法去塑造企业形象呢…

多块磁盘组磁盘离线导致VSAN存储崩溃的VSAN数据恢复案例

VSAN简介&#xff1a; VSAN是以vSphere内核为基础进行开发、可扩展的分布式存储架构。VSAN存储层由VSAN控制和管理&#xff0c;VSAN存储层是通过vSphere集群主机中闪存和硬盘的存储空间构建的&#xff0c;供vSphere集群使用的统一共享存储层。 VSAN存储是一个对象存储&#xff…

华中某科技大学校园网疑似dns劫持的解决方法

问题 在校园网ping xxx.ddns.net&#xff0c;域名解析失败 使用热点ping xxx.ddns.net&#xff0c;可以ping通 尝试设置windows dns首选dns为114.114.114.114&#xff0c;重新ping&#xff0c;仍然域名解析失败 猜测【校园网可能劫持dns请求】 解决方法 使用加密的dns请求…

Binary Indexed Tree

refs: 裸题之灵神题解&#xff1a; <https://leetcode.cn/problems/range-sum-query-mutable/solutions/2524481/dai-ni-fa-ming-shu-zhuang-shu-zu-fu-shu-lyfll>灵神的视频讲解&#xff1a; <https://www.bilibili.com/video/BV14r421W7oR>1. 用来解决什么问题 …