低级爬虫实现-记录HCIP云架构考试

因工作需要考HCIP云架构(HCIP-Cloud Service Solution Architect)证书, 特意在淘宝上买了题库, 考过了。

事后得知自己被坑了, 多花了几十大洋。

所以想着在授权期内将题库"爬"下来, 共享给大家。

因为整个过程蛮有意思, 所以简单记录下。

思路

题库是以微信小程序的形式出现, 我不会真正的网络爬虫, 也不知道微信小程序怎么爬,所以想着通过截图+OCR的方式将其转换成文字,整理成markdown形式, 再通过mkdoc转换成网页。

题库有答题模式和背题模式,也有按照题型进行分类,我们选择背题模式, 以单选题为例。

实现

自动截图

python 复制代码
import glob
import os.path
import time

import pyautogui

tx_dict = {
    '1': '单选',
    '2': '多选',
    '3': '判断',
    '4': '填空',
}
tx = input("输入题型编号(1.单选 2.多选 3.判断 4.填空):\n")

lx = tx_dict.get(tx)
if not lx:
    raise Exception()
output_dir = f'output/{lx}'
os.makedirs(output_dir, exist_ok=True)

# 计算翻页次数
nums = int(input('输入题目数量:\n'))


def next_page():
    """
    模拟滑动到下一页
    :return:
    """
    pyautogui.moveTo(560, 1000)
    pyautogui.dragTo(60, 1000, 0.2, button='left')
    time.sleep(1)


if __name__ == '__main__':
    for i in range(0, nums):
        pyautogui.screenshot(f"{output_dir}/{i}.png", region=(32, 266, 750, 1310))
        next_page()

看下效果:

去水印

采集水印色素, 对相似度接近的色素进行白色替换处理:

python 复制代码
import glob
import os

from PIL import Image

# 设置一个颜色差异阈值,这里以50为例
threshold = 50
# 水印色素
watermark_rgb = (232, 232, 232)


def abs_delta(r1, g1, b1, target):
    return (abs(target[0] - r1) + abs(target[1] - g1) + abs(target[2] - b1)) < threshold


origin_file_pattern = f"output/单选/*.png"
target_dir = f"output/单选/water"
os.makedirs(target_dir, exist_ok=True)
pngs = glob.glob(origin_file_pattern)
for png in pngs:
    img = Image.open(png)

    # 获取图片的宽度和高度
    width, height = img.size

    for y in range(height):
        for x in range(width):
            r, g, b = img.getpixel((x, y))
            if abs_delta(r, g, b, watermark_rgb):
                img.putpixel((x, y), (255, 255, 255))  # 将接近白色的像素改为白色,也可改为背景色近似值

    # 保存处理后的图片,将输出路径替换为实际想要保存的地方
    output_path = f"{target_dir}/{os.path.basename(png)}"
    img.save(output_path)

效果如下:

OCR

由于图片较多,对批量处理和准确度要求较高, 通过比较各种工具, 最终选择了Umi-OCR

使用比较简单, 截个图示意一下就行了:

校正

输出文字后就是漫长的文字校正过程了, 包括识别错误、换行处理等等

生成文档

我选择的是mkdocs,主要用来生成静态网页,类似于gitbook,方便传播,使用教程就不赘述了,网上有很多。

效果也不展示了, 因为我还在漫长的校正步骤中,哪位大神有好的校正方法可以联系我呀,痛苦如狗!!!!!!!!!

相关推荐
Fairy_sevenseven4 小时前
[1]python爬虫入门,爬取豆瓣电影top250实践
开发语言·爬虫·python
white-persist6 小时前
MCP协议深度解析:AI时代的通用连接器
网络·人工智能·windows·爬虫·python·自动化
深蓝电商API7 小时前
不止是 Python:聊聊 Node.js/Puppeteer 在爬虫领域的应用
爬虫·python·node.js
摩羯座-1856903059421 小时前
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
linux·网络·数据库·windows·爬虫·python
蒋星熠1 天前
反爬虫机制深度解析:从基础防御到高级对抗的完整技术实战
人工智能·pytorch·爬虫·python·深度学习·机器学习·计算机视觉
B站_计算机毕业设计之家1 天前
python汽车数据分析可视化系统 爬虫 懂车帝 毕业设计 Django框架 vue框架 大数据✅
爬虫·python·数据分析·django·汽车·推荐算法·懂车帝
qq_402605651 天前
python爬虫(二) ---- JS动态渲染数据抓取
javascript·爬虫·python
浔川python社2 天前
《网络爬虫技术规范与应用指南系列》(xc—5)完
爬虫·python
深蓝电商API2 天前
爬虫的道德与法律边界:Robots 协议、版权与个人信息保护
爬虫
qq_402605652 天前
python爬虫(一) ---- 静态html数据抓取
爬虫·python·html