脚本刷课思路-1
前言
闲来无事,看了一下后台文章的阅读数据,发现随便乱写的 验证码绕过
居然是历史最高的阅读,惊了,我也不知道是对验证码绕过有兴趣,还是对刷课的方法有兴趣
所以反正闲着也是闲着,就写个爬虫刷课的思路,也欢迎指点,这部分,我要分两篇来写
一呢,主要是我懒,明天都周六了,就应该躺在床上玩手机浪费时间,不应该学习了
二呢,是将基础篇和思路篇分开来,这样会好点(而且我还能多水一篇)
正文
那么众所周知的是,网页分为,动态网页和静态网页这两个,这两者的区别就在于,他页面的数据是否有进行交互
比如你用自己的账号 Elapse
登录了一个论坛
你在进入个人中心时,显示的肯定是你 Elapse
的账号信息
但是这个时候,你右键查看源代码的时候,会发现你的数据并不在源代码中,在相对应的位置可能是一串你看不懂的代码
这是因为,这个网页的数据,是从后端的数据库(或者是其他类数据库的文件)中获取来的,那么如果他页面不是动态的,名字那个地方不是一串代码,会发生什么事呢
用户B用 Ernket
这个ID登录了论坛,发现
个人中心里居然是别人的信息,嗨呀,气不气,气死了,这个用户B辛辛苦苦上了一天的网课,结果全计到用户A的头上去了,心态爆炸
所以,任何这种需要数据交互的地方,都是动态页面,因为你总不能,一个网站成千上百的用户,首页打开来全是”欢迎您 Elapse“而不是显示你的名字
但是有一个问题就随之而来了,我爬虫,请求页面的时候,不也是请求到这些乱七八糟的玩意吗,那我还怎么刷课啊,内容我都找不到了
那么前面提到了一个,网页的数据,是从别的地方请求来的,这种东西,叫 API
,也叫接口
我们假设,用户登录成功后,会有一个参数
id=123456
这个参数,是这个用户的ID,当网页登录成功后,他会通过接口,将id这个参数发送过去,服务器在接收到了之后查找,找到了之后,就打包发送回去
这个时候网页A收到了数据a,将a打开来一看,用户名、课程名全在上面,于是就一一对应上去相应的位置
所以,你爬虫访问页面没有数据时,这个时候,只需要轻按下你电脑的 F12
,然后点击 XHR
这样就会显示当前页面,请求了哪些接口,你在根据返回的内容判断这个接口是做什么的就好了
你可以通过开发者工具,来看他请求了哪些页面,用的参数是什么,以及返回的内容是什么,根据这些,来编写程序,爬取你想要的内容
有没有好看的小说推荐啊?
- OOAD-设计模式(三)之创建型设计模式(5种)
- ActiveMQ笔记(5):JMX监控
- session失效时间设置
- ActiveMQ笔记(4):搭建Broker集群(cluster)
- OOAD-设计模式(二)之GRASP模式与GOF设计模式概述
- 围棋之幸?围棋之悲?史上最年轻“五冠王”柯洁宣布再战AI
- spring 在Thread中注入@Resource失败,总为null的解决方案
- ActiveMQ笔记(3):基于Networks of Brokers的HA方案
- HTML5 Video Player概览
- 统计01:概述
- ActiveMQ笔记(2):基于ZooKeeper的HA方案
- ActiveMQ笔记(2):基于ZooKeeper的HA方案
- CSS几个竖直与水平居中盒子模型
- ZooKeeper 笔记(6) 分布式锁
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux上安装mitmproxy
- Jmeter(二十三) - 从入门到精通 - JMeter函数 - 上篇(详解教程)
- Elasticsearch学习笔记 -- 1
- Jmeter(二十四) - 从入门到精通 - JMeter函数 - 中篇(详解教程)
- [javascript] elementui和vue下复制粘贴上传图片
- SQL Server通过创建临时表遍历更新数据
- 对于 JavaScript 中循环之间的技术差异概述
- 初识 webpack 原理——自定义插件
- 高性能解决线程饥饿的利器 StampedLock
- 前端应该知道的web调试工具——whistle
- 最强大的 CSS 布局 —— Grid 布局
- SAP Spartacus ProductConnector和ProductService实现
- Sorted Adjacent Differences(CodeForces - 1339B)【思维+贪心】
- Redis 发布订阅,小功能大用处,真没那么废材!
- R语言实现生物序列的降维比对