Skip to content

Woods30/web-crawler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Web Crawler

一个基于 Playwright 的增强型网页爬虫工具,专门用于爬取网页内容和下载附件文件。

功能特性

  • 🚀 JavaScript 渲染支持: 使用 Playwright 处理动态网页内容
  • 📎 智能附件下载: 自动识别并下载各种格式的附件文件
  • 🖼️ iframe 递归处理: 支持处理页面中的 iframe 内容
  • 📸 页面截图: 自动保存页面截图
  • 🔗 链接提取: 提取页面中的所有链接
  • 异步处理: 高效的异步爬取机制
  • 🛡️ 错误处理: 完善的错误处理和重试机制

支持的附件格式

  • 文档: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX
  • 压缩包: ZIP, RAR, 7Z, TAR, GZ, BZ2
  • 文本: TXT, CSV

安装依赖

使用 uv(推荐)

# 安装 uv(如果尚未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 安装项目依赖
uv sync

# 安装浏览器驱动
uv run playwright install chromium

使用 pip

# 安装 Python 依赖
pip install playwright aiohttp

# 安装浏览器驱动
playwright install chromium

为什么推荐使用 uv?

  • 更快的依赖解析: uv 比 pip 快 10-100 倍
  • 🔒 锁文件支持: 通过 uv.lock 确保依赖版本一致性
  • 🐍 Python 版本管理: 自动管理 Python 版本
  • 📦 虚拟环境: 自动创建和管理虚拟环境
  • 🛡️ 依赖隔离: 避免依赖冲突

使用方法

基本用法

使用 uv(推荐)

uv run python web_crawler.py urls.txt [output_dir]

使用 Python 直接运行

python web_crawler.py urls.txt [output_dir]

参数说明

  • urls.txt: 包含要爬取的 URL 列表文件(每行一个 URL)
  • output_dir: 输出目录(可选,默认为 'output')

示例

  1. 准备 URL 文件 (urls.txt):
https://www.example.com/page1
https://www.example.com/page2
https://www.example.com/page3
  1. 运行爬虫:
# 使用 uv(推荐)
uv run python web_crawler.py urls.txt output

# 或使用 Python 直接运行
python web_crawler.py urls.txt output
  1. 查看结果:
output/
├── 0001/
│   ├── page.html          # 页面 HTML 内容
│   ├── screenshot.png     # 页面截图
│   ├── links.txt         # 提取的链接列表
│   ├── url.txt           # 原始 URL
│   └── attachments/       # 下载的附件
│       ├── document.pdf
│       └── form.docx
├── 0002/
│   └── ...
└── ...

输出结构

每个爬取的页面会生成一个编号目录(如 0001, 0002 等),包含:

  • page.html: 完整的页面 HTML 内容
  • screenshot.png: 页面截图
  • links.txt: 页面中所有链接的列表
  • url.txt: 原始 URL
  • attachments/: 下载的附件文件
  • iframes/: iframe 内容(如果存在)

配置选项

可以在 web_crawler.py 中修改以下配置:

PAGE_LOAD_TIMEOUT = 60000      # 页面加载超时(毫秒)
NAVIGATION_TIMEOUT = 30000     # 导航超时(毫秒)
WAIT_AFTER_LOAD = 5           # 页面加载后等待时间(秒)
DELAY_BETWEEN_URLS = 2        # URL之间延迟(秒)
DEBUG_MODE = True             # 调试模式

技术特点

  • 智能附件识别: 通过 URL 扩展名、Content-Type 和页面内容多重判断
  • 网络监听: 实时监听网络请求,自动下载附件
  • 链接分析: 分析 a 标签中的附件链接
  • 点击下载: 尝试点击页面元素触发下载
  • Cookie 支持: 自动处理会话 Cookie
  • 文件名安全: 自动处理非法字符,避免文件名冲突

注意事项

  1. 请遵守网站的 robots.txt 和使用条款
  2. 合理设置请求间隔,避免对目标网站造成过大压力
  3. 某些网站可能需要登录或特殊处理,请根据实际情况调整
  4. 大文件下载可能需要较长时间,请耐心等待

故障排除

常见问题

  1. 浏览器启动失败: 确保已正确安装 Playwright 浏览器
  2. 附件下载失败: 检查网络连接和目标 URL 可访问性
  3. 页面加载超时: 增加 PAGE_LOAD_TIMEOUT
  4. 内存不足: 减少并发处理数量或增加系统内存

调试模式

设置 DEBUG_MODE = True 可以查看详细的处理日志,帮助诊断问题。

许可证

本项目采用 MIT 许可证。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages