Python Selenium小说爬虫工具 - 自动化爬取多章节内容
·
📋 项目简介
在日常学习和开发中,我们经常需要获取网络上的文本内容进行分析或学习。今天分享一个我开发的小说爬虫工具,它使用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等 |
🎯 工作原理
爬取流程
- 初始化浏览器:使用Selenium启动Chrome浏览器(无头模式)
- 打开起始页面:访问指定的小说URL
- 跳过章节:自动跳转到指定的开始章节
- 爬取内容:使用多种选择器尝试查找小说内容
- 保存内容:将爬取到的内容写入本地文件
- 查找下一章:使用多种选择器尝试查找下一章链接
- 循环爬取:重复步骤4-6,直到达到目标章节数量
- 结束爬取:关闭浏览器,输出爬取结果统计
选择器策略
# 内容选择器
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
更多推荐
所有评论(0)