baka也想玩爬虫之怒爬实验手册
前言
在一个无聊的下午,我在学校做实验。
突发奇想,能不能把学校的实训平台实验手册爬下来
说干就干
探索
由于我也不会爬虫)
但是我有AI啊!
于是乎琢磨了一下午
因为学校的实训平台是js动态网页,所以不能用简单的模式匹配继续爬取
于是乎我打开了F12
这F12就是好啊
马上给我看到了关键信息:
可以看到其中有一个/api/h/course/lessonView/getLesson接口直接返回md文件
那就好办了
那我是不是只需要监听这个接口的响应体,然后提取md字段即可?
说干就干
于是乎马上把我的方案给AI:
用户需求:
在Edge浏览器中创建一个插件,监听特定请求:
1
https://192.168.45.20/api/h/course/lessonView/getLesson
当捕获响应时,自动提取其中的
md
字段内容,并将其保存到桌面的output
文件夹。
存在的问题:
- 浏览器插件Manifest V3版本不再支持使用
webRequest
API直接获取响应体数据,因此原方案无法正常运行。
推荐的解决方案:
使用chrome.devtools.network
API:
- 优点:可完全自动化,精确捕获并保存响应数据。
- 缺点:需要开启浏览器开发者工具(F12)。
实施方法(推荐):
编写Manifest V3扩展程序,包含:
manifest.json
(声明插件权限、使用devtools_page
)devtools.html
(加载开发者工具脚本)devtools.js
(监听网络请求,提取md
字段,自动下载)
启用插件后,在Edge中访问指定链接,并打开开发者工具,即可自动捕获和下载数据。
于是乎写出来了个egde插件,直接监听,我就可以批量下载了
至于图片的问题,等我把md文件收集起来,用脚本统一提取图片链接即可。
至于进一步自动化,这我就不会了,没有思路。。
后谈
图片获取
光有文档没图片怎么可以,于是乎写了个获取图片的脚本
基本思路是这样:
- 模式匹配md中的图片链接,这个很好做。
- 处理成数组,然后遍历下载
小坑
很简单
不过有点小坑
基本上就是跟权限验证有关,下载图片需要cookie
反正就是把我的cookie复制一份就行。
除特別声明外,本博客所有文章均遵守 WTFPL 许可。
评论