当前位置: 首页 > news >正文

对于无法直接获取URL的数据爬虫

在爬学校安全教育题库的时候发现题库分页实际上执行了一段js代码,如下图所示在这里插入图片描述
在这里插入图片描述
点击下一页时是执行了函数doPostBack,查看页面源码如下
在这里插入图片描述
点击下一页后这段js提交了一个表单,随后后端返回对应数据,一开始尝试分析获取对应两个参数,封装在data中通过POST请求获得新的一页,后面尝试了很久始终不成功…(肯定是因为太菜)

没办法只能使用神器selenium,缺点是要调用浏览器,肯定是比较慢的,但是python直接给你模拟浏览器的各种操作,而且不用抓包分析,比较方便。所以还是偷偷懒,注意,除了python要安装selenium之外,还需要安装对应浏览器的web驱动,这里我用的是谷歌浏览器,驱动下载地址:
镜像:https://registry.npmmirror.com/binary.html?path=chromedriver/
如果你谷歌版本新,镜像上可能没有对应版本。
官网:https://sites.google.com/chromium.org/driver/downloads(117以上在这里找:这里~)

下载好后就是正常的爬虫步骤,直接看代码吧:

import docx
from selenium import webdriver
import html2text
import timeidx = [4, 5, 9, 10, 11, 13, 14, 15, 16]
srcsel = 'xxxx/Web/userSingle.aspx?ID='  # 选择题
srcjg = 'xxxx/Web/userIs.aspx?ID='  # 判断题def remove_tags(text):h = html2text.HTML2Text()h.ignore_links = Truereturn h.handle(text)def process(url):driver = webdriver.Chrome()driver.get(url)res = driver.find_element("id", 'GridViewx').get_attribute('innerHTML')res = remove_tags(res)doc.add_paragraph().add_run(res)pages = int(driver.find_element("id", 'GridViewx_ctl13_lblPageCount').text)# pages = 2for i in range(pages - 1):time.sleep(1.5)driver.find_element("id", 'GridViewx_ctl13_btnNext').click()res = driver.find_element("id", 'GridViewx').get_attribute('innerHTML')res = remove_tags(res)doc.add_paragraph().add_run(res)driver.quit()doc = docx.Document('res.docx')
for pid in idx:process(srcsel + str(pid))time.sleep(3)process(srcjg + str(pid))
doc.save('res.docx')

为什么多此一举用html2text呢?因为发现这样写又能比较好看(和丑的比起来)还不用自己一条数据一条数据取出来排版。然后代码里我直接写进word文档里了,这里有个小坑,你的word文档(docx)中必须得有东西,不能是空的,要不然会报错…

懒得排版,凑合看看

相关文章:

对于无法直接获取URL的数据爬虫

在爬学校安全教育题库的时候发现题库分页实际上执行了一段js代码,如下图所示 点击下一页时是执行了函数doPostBack,查看页面源码如下 点击下一页后这段js提交了一个表单,随后后端返回对应数据,一开始尝试分析获取对应两个参数&a…...

35.树与二叉树练习(1)(王道第5章综合练习)

【所用的树,队列,栈的基本操作详见上一节代码】 试题1(王道5.3.3节第3题): 编写后序遍历二叉树的非递归算法。 参考:34.二叉链树的C语言实现_北京地铁1号线的博客-CSDN博客https://blog.csdn.net/qq_547…...

JSON数据处理工具-在线工具箱网站tool.qqmu.com的使用指南

导语:无论是处理JSON数据、进行文本数字处理、解码加密还是使用站长工具,我们都希望能够找到一个功能强大、简便易用的在线平台。tool.qqmu.com作为一款瑞士军刀般的在线工具箱网站,满足了众多用户的需求。本文将介绍tool.qqmu.com的多项功能…...

leetcode:190. 颠倒二进制位

一、题目: 函数原型: uint32_t reverseBits(uint32_t n) 解释:uint32是无符号int或short的别称,传入的参数是一个32位二进制串,返回值是该32位二进制串逆序后的十进制值 二、思路: 实际上并不需要真的去逆…...

Spring Cloud--@RefreshScope动态刷新的注意事项

原文网址:Spring Cloud--RefreshScope动态刷新的注意事项_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Spring Cloud的RefreshScope动态刷新的注意事项。 不用RefreshScope也能动态刷新 Spring Cloud的默认实现了动态刷新,不加RefreshScope就能实现动态…...

visual-studio-code通过跳板机连接远程服务器的配置操作

step1:在本机上生成私钥和公钥 sh-keygen -t rsa -C “your_emailxxx.com”生成的两个默认文件中,id_rsa.pub是公钥,id_rsa是私钥 step2:在vscode安装Remote-SSH插件 step3:将本机生成的私钥和公钥上传服务器上 把本机生成的rsa_id.pub公钥上传至服务…...

LuatOS-SOC接口文档(air780E)-- gpio - GPIO操作

常量 常量 类型 解释 gpio.LOW number 低电平 gpio.HIGH number 高电平 gpio.PULLUP number 上拉 gpio.PULLDOWN number 下拉 gpio.RISING number 上升沿触发 gpio.FALLING number 下降沿触发 gpio.BOTH number 双向触发,部分设备支持 gpio.HIGH_IRQ …...

一个命令让redis服务端所有信息无所遁形~(收藏吃灰系列)

Redis服务器是一个事件驱动程序,它主要处理两类事件:文件事件和时间事件。这些事件的处理和Redis命令的执行密切相关。下面我将以Redis服务端命令为切入点,深入解析其工作原理和重要性。 首先,我们先了解Redis服务端有哪些命令。…...

通过Node.js获取高德的省市区数据并插入数据库

通过Node.js获取高德的省市区数据并插入数据库 1 创建秘钥1.1 登录高德地图开放平台1.2 创建应用1.3 绑定服务创建秘钥 2 获取数据并插入2.1 创建数据库连接工具2.2 请求数据2.3 数据处理2.4 全部代码 3 还可以打印文件到本地 1 创建秘钥 1.1 登录高德地图开放平台 打开开放平…...

记一次 .NET某账本软件 非托管泄露分析

一:背景 1. 讲故事 中秋国庆长假结束,哈哈,在老家拍了很多的短视频,有兴趣的可以上B站观看:https://space.bilibili.com/409524162 ,今天继续给大家分享各种奇奇怪怪的.NET生产事故,希望能帮助…...

Oracle笔记-对ROWNUM的一次理解(简单分页)

此博文记录时间:2023-05-05,发到互联网上是2023-10-09 这个在分页里面用得比较多,在MySQL中,通常使用limit去操作,而去感觉比较简单,Oracle中无此关键字。 通过查阅资料后,要实现分页需要用到…...

系统架构设计:10 论数据湖技术及其应用

目录 一 数据湖技术 1 数据库 2 数据仓库 3 数据库与数据仓库的对比 4 数据湖...

【MySQL】基本查询(三)聚合函数+group by

文章目录 一. 聚合函数二. group by子句结束语 建立如下表 //创建表结构 mysql> create table exam_result(-> id int unsigned primary key auto_increment,-> name varchar(20) not null comment 同学姓名,-> chinese float default 0.0 comment 语文成绩,->…...

基于KubeAdm搭建多节点K8S集群

基于KubeAdm搭建多节点K8S集群 1、基本流程(注意 docker 版本和kubeadm、kubelet、kubectl的关系)2、安装utils依赖(安装范围:主节点工作节点)3、安装docker (安装范围:主节点工作节点&#xff…...

VuePress实现自动获取文章侧边栏目录功能

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…...

nginx配置实例-负载均衡

1 实现效果: 浏览器访问nginx,输入访问nginx地址,然后负载均衡到tomcat8080和8002端口中 2 准备工作: 1)准备两台tomcat容器,一台8080,一台8081 2)在两台tomcat里面的webapps目录…...

Nginx的跨域问题解决

同源策略 浏览器的同源策略:是一种约定,是浏览器最核心也是最基本的安全功能,如果浏览器少了同源策略,则浏览器的正常功能可能都会受到影响。 同源: 协议、域名(IP)、端口相同即为同源 跨域问题 有两台服务器分别为A,B,如果从…...

ts的交叉类型是什么

交叉类型是TypeScript中的一种类型操作符,用于将多个类型合并成一个类型,表示同时拥有这些类型的属性和方法。交叉类型使用&符号进行连接。例如,以下代码定义了一个交叉类型Person & Serializable: interface Person {na…...

【【萌新的SOC学习之AXI接口简介】】

萌新的SOC学习之AXI接口简介 AXI总线的初步介绍 AXI 总线是 ARM AMBA 一部分 (高级可扩展接口) AMBA(高级微控制器总线架构) :开放的片内互联的总线标准,能再多主机设计中实现多个控制器和外围设备之间的连接和管理。…...

ios safari 浏览器跳转页面没有自适应

今天开发遇到了一个问题,当用户点击浏览器中的表单进行注册时,表单元素会放大,随后跳转页面无法还原到初始状态。 这是因为如果 的 font-size 被设定为 16px 或更大,那么 iOS 上的 Safari 将正常聚焦到输入表单中。但是&#xff…...

别再乱改NV了!深入理解高通Modem配置:从UI Task到PDN管理,这些底层逻辑你得懂

高通Modem配置深度解析:从UI Task到PDN管理的底层逻辑 1. 理解Modem配置的本质 在移动通信领域,高通平台的Modem配置一直是个既关键又复杂的课题。许多开发者习惯性地复制粘贴NV配置参数,却对背后的运行机制一知半解。这种"知其然而不知…...

终极Intel PCM部署手册:从源码编译到生产环境配置

终极Intel PCM部署手册:从源码编译到生产环境配置 【免费下载链接】pcm Intel Performance Counter Monitor (Intel PCM) 项目地址: https://gitcode.com/gh_mirrors/pc/pcm Intel Performance Counter Monitor(Intel PCM)是一个强大的…...

告别SSH断连焦虑:用Tmux会话持久化拯救你的远程工作

远程开发者的救星:Tmux实战指南与高阶会话管理技巧 凌晨三点,服务器上的关键编译任务刚执行到一半,突然网络抖动导致SSH连接中断——这种令人抓狂的场景,每一位远程开发者都深有体会。传统终端会话的脆弱性让我们不得不反复重做工…...

Dify工作流集成StructBERT:构建自定义文本智能处理应用

Dify工作流集成StructBERT:构建自定义文本智能处理应用 最近在做一个智能客服系统的升级项目,客户那边提了个挺实际的需求:每天有大量工单进来,希望系统能先自动判断一下问题类型,比如是“账号问题”、“支付故障”还…...

OpCore-Simplify高效配置实战指南:智能适配黑苹果硬件的开源工具

OpCore-Simplify高效配置实战指南:智能适配黑苹果硬件的开源工具 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 当你面对繁杂的黑苹果EFI…...

DriverStore Explorer完全指南:免费Windows驱动管理终极教程

DriverStore Explorer完全指南:免费Windows驱动管理终极教程 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer DriverStore Explorer是一款功能强大的Windows驱动程序管…...

ViGEmBus虚拟控制器驱动深度应用指南:从技术原理到场景落地

ViGEmBus虚拟控制器驱动深度应用指南:从技术原理到场景落地 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 一、价值定位:重新定义虚…...

计算机网络知识应用:保障分布式StructBERT微服务集群通信

计算机网络知识应用:保障分布式StructBERT微服务集群通信 最近在搞一个基于StructBERT模型的智能问答系统,随着用户量上来,单台服务器明显扛不住了,响应慢不说,还动不动就挂掉。没办法,只能上微服务集群&a…...

MogFace-large项目GitHub Actions CI/CD流水线构建教程

MogFace-large项目GitHub Actions CI/CD流水线构建教程 最近在折腾一个基于MogFace-large的人脸检测项目,每次手动测试、打包、部署,流程繁琐不说,还容易出错。团队协作时,代码合并后谁去跑测试、谁去更新镜像,也是个…...

Spring AI 实战系列(二):ChatClient封装,告别大模型开发样板代码

系列栏目:Spring AI Spring AI 实战教程(一)入门示例 Spring AI 实战系列(二):ChatClient封装,告别大模型开发样板代码 Spring AI 实战系列(三)&…...