📋 项目简介

在日常学习和开发中,我们经常需要获取网络上的文本内容进行分析或学习。今天分享一个我开发的小说爬虫工具,它使用Python的Selenium库实现自动化浏览器操作,可以从指定章节开始,自动爬取多章小说内容并智能保存到本地文件。源码在文章结尾。

🚀 功能特点

核心功能

  • 🤖 自动化爬取:使用Selenium自动化浏览器操作,无需手动干预
  • 🔧 多选择器支持:内置多种内容和下一章链接的定位方式,提高兼容性
  • 📄 智能保存:自动将爬取的小说内容保存到本地文本文件
  • ⏭️ 章节跳过:支持从指定章节开始爬取,无需从头开始
  • 📊 进度显示:实时显示爬取进度和状态信息
  • 🔍 错误处理:完善的异常捕获和错误处理机制

技术优势

  • 使用无头浏览器模式,运行稳定高效
  • 支持多种选择器策略,适应不同网站结构
  • 智能等待机制,避免对目标网站造成压力
  • UTF-8编码保存,确保中文内容正确显示

🛠️ 技术栈

  • 编程语言:Python 3.7+
  • 核心库:Selenium WebDriver
  • 浏览器:Chrome + ChromeDriver
  • 文件处理:UTF-8文本文件

📦 安装说明

1. 环境要求

确保你的电脑已经安装了Python 3.7或更高版本。

2. 安装依赖

pip install selenium

3. 浏览器配置

  • 安装Chrome浏览器
  • 下载与Chrome版本匹配的ChromeDriver
  • 将ChromeDriver添加到系统环境变量

💻 使用方法

1. 配置参数

打开主脚本文件,修改以下参数:

# 起始URL
start_url = "https://www.example.com/book/123.html"

# 开始章节号
start_chapter = 30

# 目标爬取章节数量
target_chapters = 40

2. 运行脚本

python 1.py

3. 查看结果

脚本执行完成后,会在当前目录生成小说完整内容.txt文件,包含爬取的所有小说章节内容。

🔧 配置参数详解

参数名 说明 默认值
start_url 小说网站的起始URL 需用户配置
start_chapter 开始爬取的章节号 30
target_chapters 目标爬取的章节数量 40
chrome_options Chrome浏览器配置 无头模式、禁用GPU等

🎯 工作原理

爬取流程

  1. 初始化浏览器:使用Selenium启动Chrome浏览器(无头模式)
  2. 打开起始页面:访问指定的小说URL
  3. 跳过章节:自动跳转到指定的开始章节
  4. 爬取内容:使用多种选择器尝试查找小说内容
  5. 保存内容:将爬取到的内容写入本地文件
  6. 查找下一章:使用多种选择器尝试查找下一章链接
  7. 循环爬取:重复步骤4-6,直到达到目标章节数量
  8. 结束爬取:关闭浏览器,输出爬取结果统计

选择器策略

# 内容选择器
content_selectors = [
    ".content", "#content", ".chapter-content", 
    ".text", ".article-content", "div[class*='content']"
]

# 下一章选择器  
next_selectors = [
    "a:contains('下一章')", "a:contains('下一页')", 
    ".next", "#next", "a[rel='next']"
]

⚠️ 注意事项

网站兼容性

  • 该脚本针对特定网站开发,可能需要根据不同网站调整选择器
  • 建议先分析目标网站的HTML结构,选择合适的选择器

爬取速度

  • 为避免对网站造成过大压力,脚本每次请求后会等待5秒
  • 可根据实际情况调整等待时间

技术要求

  • 确保Chrome浏览器与ChromeDriver版本匹配
  • 请确保网络环境可以正常访问目标网站

法律合规

  • 请遵守网站的robots.txt协议,合法使用本脚本
  • 爬取的小说内容仅供个人学习使用,请勿用于商业用途

🐛 常见问题

Q: 运行脚本时提示找不到ChromeDriver?

A: 请确保ChromeDriver已正确安装,并添加到系统环境变量中。

Q: 脚本运行时提示"未找到小说内容"?

A: 可能是目标网站结构发生变化,请根据网站实际情况调整内容选择器。

Q: 脚本运行时提示"未找到下一章链接"?

A: 可能是目标网站的下一章链接选择器发生变化,请根据网站实际情况调整下一章选择器。

📁 项目结构

文件结构说明:

my-bqg/ ├── 1.py # 主爬虫脚本 ├── requirements.txt # Python依赖 ├── README.md # 项目文档 ├── LICENSE # MIT许可证 └── index.html # 项目展示页面


## 📝 代码示例

### 核心爬取逻辑
```python
def crawl_chapter(driver, url):
    """爬取单个章节内容"""
    try:
        driver.get(url)
        time.sleep(5)  # 等待页面加载
        
        # 尝试多种选择器查找内容
        content = find_element_with_selectors(driver, content_selectors)
        if content:
            save_content(content.text)
            return True
    except Exception as e:
        print(f"爬取失败: {e}")
    return False

智能元素查找

def find_element_with_selectors(driver, selectors):
    """使用多种选择器尝试查找元素"""
    for selector in selectors:
        try:
            element = driver.find_element(By.CSS_SELECTOR, selector)
            if element:
                return element
        except:
            continue
    return None

🔮 扩展思路

功能增强

  • 支持多线程爬取提高效率
  • 添加代理IP池避免被封
  • 实现断点续爬功能
  • 支持多种输出格式(PDF、EPUB等)

应用场景

  • 小说内容收集和分析
  • 文本数据挖掘
  • 自然语言处理训练数据
  • 个人阅读资料整理

📄 许可证

本项目采用 MIT许可证,详情请查看LICENSE文件。

🤝 贡献与反馈

欢迎提交Issue和Pull Request,一起完善这个项目! 如有问题或建议,欢迎通过以下方式联系:

  • 提交Issue
  • 发送邮件:1563042919@qq.com

使用本脚本即表示你同意遵守相关法律法规,合法使用爬虫工具。

希望这个工具能够帮助到需要收集网络文本内容的朋友们!如果你有任何改进建议,欢迎在评论区留言交流。


项目地址:Hch0324/my-bqg

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐