自己写了一个通用爬虫框架,希望有同志能够积极提出优化意见

https://github.com/likebeans/GeneralCrawl[项目地址]

自己做的一个通用爬虫,大部分框架和代码逻辑已经完成,但是可能还是会有一些小问题,本人精力实在有限,希望能有同志共同出力,希望终有一天能完善这个项目

Universal Spider - 通用网站爬虫

自己写了一个通用爬虫框架,希望有同志能够积极提出优化意见_第1张图片

Self-Spider 是一个功能强大的通用网站爬虫工具,旨在提供一个灵活、可配置的爬虫框架,使用户能够通过简单的配置即可爬取各种类型的网站内容。

主要特点

  • 通用性:适用于多种类型的网站,包括新闻、博客、论坛等
  • 易用性:通过配置文件即可定义爬取规则,无需编写复杂代码
  • 可扩展性:提供多个扩展点,支持自定义爬取逻辑和数据处理
  • 健壮性:内置错误处理、重试机制和进度保存功能
  • 高级功能:支持代理 IP 池、数据验证、内容增强等功能

安装

  1. 克隆仓库:
git clone https://github.com/yourusername/self-spider.git
cd self-spider
  1. 安装依赖:
pip install -r requirements.txt
  1. 确保已安装Firefox浏览器(爬虫使用Firefox WebDriver)

使用方法

基本用法

from universal_spider import UniversalSpider, get_fanzhi_config

# 使用预定义配置
config = get_fanzhi_config()

# 初始化爬虫
spider = UniversalSpider(config)

# 开始爬取
spider.start()

自定义配置

from universal_spider import UniversalSpider, create_custom_config

# 创建自定义配置
config = create_custom_config(
    base_url="https://example.com/news/page_",
    start_page=1,
    end_page=10,
    output_file="custom_news.md",
    domain="https://example.com",
    home_url="https://example.com/",
    selectors={
        "list_container": "div.news-list",
        "list_item": "div.item",
        "list_title": "h3.title a",
        "list_date": "span.time",
        "article_title": "div.article-header h1",
        "article_property": "div.article-meta",
        "article_content": "div.article-content p",
        "article_content_p": "p"
    },
    title="自定义网站新闻汇总"
)

# 初始化爬虫
spider = UniversalSpider(config)

# 开始爬取
spider.start()

配置参数说明

  • base_url: 基础URL,页码会附加在后面
  • start_page: 起始页码
  • end_page: 结束页码
  • output_file: 输出文件名
  • domain: 网站域名,用于补全相对URL
  • home_url: 网站首页,用于获取cookies
  • selectors: 网站特定的CSS选择器配置
    • list_container: 列表容器
    • list_item: 列表项
    • list_title: 列表中的标题元素
    • list_date: 列表中的日期元素
    • article_title: 文章页中的标题
    • article_property: 文章页中的属性区域
    • article_content: 文章页中的内容区域
    • article_content_p: 文章内容中的段落元素
  • title: 输出文件的标题
  • skip_patterns: 跳过包含这些模式的URL
  • proxy: 代理服务器,格式: “http://user:pass@host:port”
  • save_images: 是否保存文章中的图片

示例

查看 example.py 文件获取完整使用示例。

注意事项

  • 爬虫使用Firefox WebDriver,请确保已安装Firefox浏览器
  • 爬取速度受网络和目标网站影响,请适当调整延迟参数
  • 请遵守目标网站的robots.txt规则和使用条款
  • 爬取过程中如遇验证码,可能需要人工干预

你可能感兴趣的:(爬虫,爬虫,python)