# web2md **Repository Path**: lj-k/web2md ## Basic Information - **Project Name**: web2md - **Description**: 为构建知识库,需要使用爬虫程序爬取网页并转换为md文件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-19 - **Last Updated**: 2025-04-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## v1 爬取并转换,弃用 ## v1.2 爬取后转换 ### crawler.py 爬虫程序 ### html2md.py 转换程序 ## v3 重构爬虫程序 ### crawler-3.py 功能:爬取指定页面的html,并保存到本地指定目录 状态保存:使用excel保存url访问记录、爬取队列和状态更新 状态记录表格式: url:爬取的url depth:爬取深度 status:爬取状态 time:爬取时间 error:爬取失败原因:网络错误、程序异常 retry:爬取失败次数 reffrom: URL的来源页面(仅记录第一次) refnum:URL被的发现次数(URL被发现重复时,此值+1) 状态列表 pending:已发现,待爬取 visited:已爬取,网页已成功保存到本地 error:网络错误、程序异常等原因导致的爬取失败,会在所有网页爬取完成后再重试 notfound: 网页不存在,不会再次爬取 excluded:网址不符合条件,不会再次爬取 状态转移图: pending -> visited:爬取成功,网页已确认成功保存到本地 pending -> error:爬取失败,网络错误、程序异常等原因 pending -> notfound:爬取失败,网页不存在 pending -> excluded:爬取失败,网址不符合条件 error -> pending:使用重新爬取准备函数修改状态,以便第二次尝试 鲁棒性设计: 1. 确认爬取网页成功后,再修改状态 2. 程序启动时先检查状态记录表录,如果记录中存在待爬取的url,则直接爬取,否则从指定url开始爬取 爬取功能: 1. 支持爬取策略:广度优先、深度优先 2. 支持爬取深度:1-n 3. 支持爬取规则:url 匹配规则+排除规则,规则支持使用通配符 4. 支持爬取失败重试次数:1-n(不会在失败后第一时间重试,而是在所有网页爬取完成后再重试) 5. 支持爬取间隔设置:1-n(单位:秒) 本地文件存储目录组织: 1. 默认工作空间为:WORK_DIR,默认为当前目录下的work文件夹 2. 爬取保存目录为:WORK_DIR/RESULT_DIR/,默认为work/result 3. 爬取日志和状态记录表格目录为:WORK_DIR/LOG_DIR/,默认为work/log 爬取结果命名 1. 爬取结果文件重命名为:爬取时间-{url}.原格式 协议处理 1. 默认协议为:https,如果爬取的url没有指定协议,则默认为https 2. 如果爬取的url指定了协议,则使用指定的协议 3. 如果爬取的url指定了协议,但网址反馈协议不支持或爬取出错,则使用http、https协议重试 4. 将协议不同,但url相同的网址,视为同一个网址处理,不会重复爬取和记录 控制台显示 固定位置显示: 1. 爬取进度显示:显示各状态下url统计求和 2. 显示当前正在爬取的url、深度、reffrom 模块化设计: 1. 具备模块化设计,每个函数都是一个独立的功能模块,便于维护和扩展 2. 不使用全局变量 可读性设计 1. 函数参数支持使用默认值,便于理解 2. 每个函数都要有功能解释、参数解释、使用举例 3. 函数命名符合Python命名规范,便于理解 4. 函数注释符合Python注释规范,便于理解 5. 函数参数使用变量名,便于理解 可维护性 1. 使用log记录所有关键信息,便于调试和记录