SmartPagerankSearch / CRAWLER_PAGE_COUNT_OPTIMIZATION.md
GitHub Action
Sync from GitHub Actions (Clean Commit)
7f22d3c

爬虫页面数量优化总结

🎯 问题

爬虫爬取的页面数量太少,无法充分收集网站内容。

✅ 已完成的优化

1. 大幅增加爬取深度 🚀

  • 变更: max_depth1层 增加到 8层
  • 提升: 700% 的深度提升
  • 影响: 可以访问更深层次的页面内容

修改位置:

  • web_server.py: URL爬取调用改为 max_depth=8
  • system_manager.py: 默认参数从 max_depth=1 改为 max_depth=8

2. 添加最大页面数限制 📊

  • 新增: max_pages 参数支持
  • 设置: 最大页面数设置为 1000页
  • 效果: 可以爬取更多页面,不会因为深度限制而提前停止

修改位置:

  • web_server.py: 添加 max_pages=1000
  • system_manager.py: 添加 max_pages 参数和检查逻辑

3. 优化参数配置 ⚙️

  • 默认深度: 从1层 → 8层
  • 最大页面: 1000页
  • 自适应扩展: 高质量页面可自动扩展到10层

📊 性能提升对比

指标 优化前 优化后 提升
最大深度 1层 8层 700%
最大页面数 无限制(但深度太浅) 1000页 -
理论最大页面数 ~10-50页 1000页 20-100倍

🔍 当前配置

web_server.py

mgr.process_url_recursive(
    url, 
    max_depth=8,          # 8层深度
    max_pages=1000,       # 最多1000页
    callback=...,
    check_db_first=True
)

system_manager.py

def process_url_recursive(
    self, 
    start_url, 
    max_depth=8,          # 默认8层
    max_pages=None,       # 默认不限制(由调用方指定)
    callback=None, 
    check_db_first=True
):

🚀 进一步优化建议(可选)

如果1000页还是不够,可以考虑:

1. 增加最大页面数

max_pages=2000  # 或更多

2. 使用异步爬虫

改用 OptimizedCrawler.crawl_recursive() 方法,支持:

  • 并发处理(5个并发)
  • 链接优先级评分
  • 自适应深度调整
  • 更高效的批量处理

3. 优化链接过滤

  • 放宽域名限制(允许相关子域名)
  • 减少路径深度限制
  • 优化静态资源过滤规则

4. 禁用数据库检查(测试用)

如果数据库中有很多URL导致跳过,可以临时禁用:

check_db_first=False  # 强制重新爬取

📝 使用建议

  1. 首次爬取大型网站: 使用 max_pages=1000 或更多
  2. 增量更新: 保持 check_db_first=True,跳过已有URL
  3. 深度探索: 保持 max_depth=8,允许自适应扩展到10层

⚠️ 注意事项

  1. 时间消耗: 1000页可能需要较长时间(取决于网站响应速度)
  2. 服务器压力: 注意不要对目标服务器造成过大压力
  3. 内存使用: 1000页的爬取会占用一定内存
  4. 网络限制: 确保网络连接稳定

🔄 后续监控

建议监控以下指标:

  • 实际爬取的页面数量
  • 平均每页发现的链接数量
  • 数据库跳过的URL数量
  • 爬取完成时间

如果实际爬取数量仍然不足,可以根据这些数据进一步优化。


优化完成时间: 2024-12-XX 优化者: AI Assistant