低级爬虫实现-记录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,方便传播,使用教程就不赘述了,网上有很多。

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

相关推荐
数据小爬虫@3 小时前
利用Python爬虫快速获取商品历史价格信息
开发语言·爬虫·python
小白学大数据3 小时前
如何使用Selenium处理JavaScript动态加载的内容?
大数据·javascript·爬虫·selenium·测试工具
qq_375872695 小时前
15爬虫:下载器中间件
爬虫
数据小小爬虫8 小时前
如何利用Python爬虫获取商品历史价格信息
开发语言·爬虫·python
黑色叉腰丶大魔王8 小时前
《基于 Python 的网页爬虫详细教程》
开发语言·爬虫·python
laity179 小时前
爬取小说案例-BeautifulSoup教学篇
爬虫·python
lovelin+v1750304096611 小时前
智能电商:API接口如何驱动自动化与智能化转型
大数据·人工智能·爬虫·python
FBI780980459413 小时前
API接口在电商行业中的创新应用与趋势
运维·网络·人工智能·爬虫·python
数据小爬虫@14 小时前
Python爬虫抓取数据,有哪些常见的问题?
开发语言·爬虫·python
漫无目的行走的月亮14 小时前
基于Python Scrapy的豆瓣Top250电影爬虫程序
爬虫·python·scrapy