利用爬虫获取某学习软件的考试题库(带源码)

首先要重新进行账号的登陆用来获取cookie

按下F12在控制台输入:
// 获取当前页面的 cookies
var cookies = document.cookie.split(";");// 创建一个数组来存储 cookies 对象
var cookieArray = [];// 遍历每个 cookie 并将其转换为对象
cookies.forEach(function(cookie) {var cookieParts = cookie.split("=");var cookieName = cookieParts[0].trim();var cookieValue = cookieParts[1] ? cookieParts[1].trim() : "";cookieArray.push({ name: cookieName, value: cookieValue });
});// 将 cookies 数组转换为 JSON 字符串
var cookieJson = JSON.stringify(cookieArray, null, 2);// 创建一个 Blob 对象,将 JSON 内容保存到文件
var blob = new Blob([cookieJson], { type: "application/json" });// 创建一个链接并触发下载
var a = document.createElement("a");
a.href = URL.createObjectURL(blob);
a.download = "cookies.json"; // 设置下载的文件名
document.body.appendChild(a);
a.click();
document.body.removeChild(a);

获取到的cookie如下:
在这里插入图片描述
爬虫代码:

import requests
from bs4 import BeautifulSoup
import time
# 设置请求头
headers = {"Host": "mooc1-2.chaoxing.com","Connection": "keep-alive","Upgrade-Insecure-Requests": "1","User-Agent": "Mozilla/5.0 (Linux; Android 9; JSN-AL00a Build/HONORJSN-AL00a; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36 (schild:fb9eea5d0e85f1c0df8fc5a29fa45701) (device:JSN-AL00a) Language/zh_CN_#Hans com.chaoxing.mobile/ChaoXingStudy_3_6.4.4_android_phone_10830_262 (@Kalimdor)_ef54e909716f4179a342ae4dfc837d74","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3","Referer": "https://mooc1-2.chaoxing.com/exam-ans/exam/test/reVersionTestStartNew?keyboardDisplayRequiresUserAction=1&courseId=249366288&classId=113378271&source=0&imei=ef54e909716f4179a342ae4dfc837d74&tId=6300571&id=147285060&p=1&start=1&cpi=450898194&isphone=true&monitorStatus=360000&monitorOp=360000&remainTimeParam=6901&relationAnswerLastUpdateTime=1736168580574&enc=a409a1b9a921bbb17f047c2e1574b247","Accept-Encoding": "gzip, deflate","Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7","Cookie": "填入自己的cookie数据","X-Requested-With": "com.chaoxing.mobile",
}# 发送GET请求
url = "https://mooc1-2.chaoxing.com/exam-ans/exam/test/reVersionTestStartNew"
base_params = {"keyboardDisplayRequiresUserAction": "填入自己的抓包数据","courseId": "填入自己的抓包数据","classId": "填入自己的抓包数据","source": "0","imei": "填入自己的抓包数据","tId": "填入自己的抓包数据","id": "填入自己的抓包数据","p": "填入自己的抓包数据","cpi": "填入自己的抓包数据","isphone": "true","monitorStatus": "360000","monitorOp": "-1","remainTimeParam": "6406","relationAnswerLastUpdateTime": "填入自己的抓包数据","enc": "填入自己的抓包数据",
}# 循环从 start=1 到 start=34,我这里是因为只有35题。这里可以自己修改!
for start in range(1, 35):# 更新 start 参数params = base_params.copy()params["start"] = str(start)try:response = requests.get(url, headers=headers, params=params, timeout=10)if response.status_code != 200:print(f"Failed to fetch data for start={start}: HTTP {response.status_code}")continue
#获取响应体中的answerCon参数soup = BeautifulSoup(response.text, 'html.parser')# <div class="answerCon">answer_con_divs = soup.find_all("div", class_="answerCon")# 把题目写入1.txt 文件with open("1.txt", "a", encoding="utf-8") as file:for div in answer_con_divs:answer_text = div.get_text(strip=True)file.write(answer_text + "\n")print(f"Processed start={start}, found {len(answer_con_divs)} answers.")time.sleep(1)except requests.exceptions.RequestException as e:print(f"Error occurred for start={start}: {e}")time.sleep(5)

抓取效果图片:
在这里插入图片描述

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

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

相关文章

【C++篇】红黑树的实现

目录 前言&#xff1a; 一&#xff0c;红黑树的概念 1.1&#xff0c;红黑树的规则 1.2&#xff0c;红黑树的最长路径 1.3&#xff0c;红黑树的效率分析 二&#xff0c;红黑树的实现 2.1&#xff0c;红黑树的结构 2.2&#xff0c;红黑树的插入 2.2.1&#xff0c;大致过程…

Autodl转发端口,在本地机器上运行Autodl服务器中的ipynb文件

通过 SSH 隧道将远程端口转发到本地机器 输入服务器示例的SSH指令和密码&#xff0c;将远程的6006端口代理到本地 在服务器终端&#xff0c;激活conda虚拟环境 conda activate posecnnexport PYOPENGL_PLATFORMegljupyter notebook --no-browser --port6006 --allow-root从…

镭速大文件传输视频文件预览实现原理

镭速可以支持视频预览&#xff0c;在测试过程中需要大量不同格式的视频&#xff0c;如果直接去找各种格式的视频不太现实&#xff0c;所以就会用到一个视频格式转换的工具ffmpeg&#xff0c;本文将介绍ffmpeg的基本使用方法。FFmpeg 是一个免费开源的音视频处理工具&#xff0c…

达梦8-DMSQL程序设计学习笔记1-DMSQL程序简介

1、DMSQL程序简介 DMSQL程序是达梦数据库对标准SQL语言的扩展&#xff0c;是一种过程化SQL语言。在DMSQL程序中&#xff0c;包括一整套数据类型、条件结构、循环结构和异常处理结构等&#xff0c;DMSQL程序中可以执行SQL语句&#xff0c;SQL语句中也可以使用DMSQL函数。 DMSQ…

C# 获取PDF文档中的字体信息(字体名、大小、颜色、样式等

在设计和出版行业中&#xff0c;字体的选择和使用对最终作品的质量有着重要影响。然而&#xff0c;有时我们可能会遇到包含未知字体的PDF文件&#xff0c;这使得我们无法准确地复制或修改文档。获取PDF中的字体信息可以解决这个问题&#xff0c;让我们能够更好地处理这些文件。…

git操作(Windows中GitHub)

使用git控制GitHub中的仓库版本&#xff0c;并在Windows桌面中创建与修改代码&#xff0c;与GitHub仓库进行同步。 创建自己的GitHub仓库 创建一个gen_code实验性仓库用来学习和验证git在Windows下的使用方法&#xff1a; gen_code仓库 注意&#xff0c;创建仓库时不要设置…

thinkphp6 + redis实现大数据导出excel超时或内存溢出问题解决方案

redis下载安装&#xff08;window版本&#xff09; 参考地址&#xff1a;https://blog.csdn.net/Ci1693840306/article/details/144214215 php安装redis扩展 参考链接&#xff1a;https://blog.csdn.net/jianchenn/article/details/106144313 解决思路&#xff1a;&#xff0…

设计模式-工厂模式/抽象工厂模式

工厂模式 定义 定义一个创建对象的接口&#xff0c;让子类决定实列化哪一个类&#xff0c;工厂模式使一个类的实例化延迟到其子类&#xff1b; 工厂方法模式是简单工厂模式的延伸。在工厂方法模式中&#xff0c;核心工厂类不在负责产品的创建&#xff0c;而是将具体的创建工作…

学习threejs,使用OrbitControls相机控制器

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.OrbitControls 相机控…

Linux:认识Shell、Linux用户和权限

谈起Linux&#xff0c;一般是在说区别于Windows的Linux操作系统&#xff0c;而Linux刚开始用来指Linux内核。值得一提的是&#xff0c;安卓底层也是Linux内核&#xff0c;而安卓系统又是区别于Linux的操作系统。 目录 一、Shell 为什么会有Shell 什么是Shell Shell相关具体…

HCIP-VLAN-hybrid接口+DHCP实验

1.拓扑及实验需求 2.需求分析 需要用到的技术 1、虚拟局域网&#xff08;VLAN&#xff09; 2、动态主机配置协议&#xff08;DHCP&#xff09; 3、单臂路由 首先先完成交换部分&#xff0c;创建对应的vlan将PC1与PC3划入vlan2且接口类型为access&#xff0c;而以外的PC都划…

【Redis】Redis 集群中节点之间如何通信?

【Redis】Redis 集群中节点之间如何通信&#xff1f; 一背景概述二通信协议Gossip 协议 三通信机制Gossip 消息类型(1).Ping消息(2).Pong消息(3).Meet消息(4).Fail消息 消息传播模式(1).反熵(Anti-entropy)(2).谣言传播(Rumor mongering) 四通信过程通信端口通信频率故障检测与…

《Keras 3 在 TPU 上的肺炎分类》

Keras 3 在 TPU 上的肺炎分类 作者&#xff1a;Amy MiHyun Jang创建日期&#xff1a;2020/07/28最后修改时间&#xff1a;2024/02/12描述&#xff1a;TPU 上的医学图像分类。 &#xff08;i&#xff09; 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 简介 设置 本教程将介…

计算机网络 (42)远程终端协议TELNET

前言 Telnet&#xff08;Telecommunication Network Protocol&#xff09;是一种网络协议&#xff0c;属于TCP/IP协议族&#xff0c;主要用于提供远程登录服务。 一、概述 Telnet协议是一种远程终端协议&#xff0c;它允许用户通过终端仿真器连接到远程主机&#xff0c;并在远程…

微服务拆分

微服务拆分 接下来&#xff0c;我们就一起将黑马商城这个单体项目拆分为微服务项目&#xff0c;并解决其中出现的各种问题。 熟悉黑马商城 首先&#xff0c;我们需要熟悉黑马商城项目的基本结构&#xff1a; 大家可以直接启动该项目&#xff0c;测试效果。不过&#xff0c…

「刘一哥GIS」系列专栏《GRASS GIS零基础入门实验教程(配套案例数据)》专栏上线了

「刘一哥GIS」系列专栏《GRASS GIS零基础入门实验教程》全新上线了&#xff0c;欢迎广大GISer朋友关注&#xff0c;一起探索GIS奥秘&#xff0c;分享GIS价值&#xff01; 本专栏以实战案例的形式&#xff0c;深入浅出地介绍了GRASS GIS的基本使用方法&#xff0c;用一个个实例讲…

Lianwei 安全周报|2025.1.13

新的一周又开始了&#xff0c;以下是本周「Lianwei周报」&#xff0c;我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件&#xff0c;保证大家不错过本周的每一个重点&#xff01; 政策/标准/指南最新动态 01 美国国土安全部发布《公共部门生成式人工智能部署手…

sparkSQL练习

1.前期准备 &#xff08;1&#xff09;建议先把这两篇文章都看一下吧&#xff0c;然后把这个项目也搞下来 &#xff08;2&#xff09;看看这个任务 &#xff08;3&#xff09;score.txt student_id,course_code,score 108,3-105,99 105,3-105,88 107,3-105,77 105,3-245,87 1…

使用docker-compose安装ELK(elasticsearch,logstash,kibana)并简单使用

首先服务器上需要安装docker已经docker-compose&#xff0c;如果没有&#xff0c;可以参考我之前写的文章进行安装。 https://blog.csdn.net/a_lllk/article/details/143382884?spm1001.2014.3001.5502 1.下载并启动elk容器 先创建一个网关&#xff0c;让所有的容器共用此网…

vue3+elementPlus之后台管理系统(从0到1)(day1)

vue3官方文档&#xff1a;https://cn.vuejs.org/guide/introduction.html 1、项目创建 确保电脑已安装node 查看命令&#xff1a; node -v进入项目目录&#xff0c;创建项目 npm init vuelatest Need to install the following packages: create-vue3.13.0 Ok to procee…