我们本次的目标是爬取飞卢小说网站(网址:https://b.faloo.com/)上某本小说的章节内容。具体来说,我们会聚焦于一部名为《偷吃我外卖被辣哭,问我要索赔?》的小说。通过分析其网页结构,我们将实现对小说标题和内容的自动获取,便于后续的阅读或者数据分析。
一、爬取目标
本次爬虫的目标是获取飞卢小说网站上《偷吃我外卖被辣哭,问我要索赔?》这本小说的所有章节内容。通过分析网页结构,我们将实现对小说标题和内容的自动提取,为后续的阅读或数据分析提供便利。
二、所涉及知识点
在构建这个爬虫项目时,我们需要掌握以下核心知识点:
- HTTP请求和响应:了解如何使用HTTP协议来请求网页数据。
- Python第三方库 :
requests
:用于发送网络请求并获取网页内容。parsel
:用于解析HTML文档,方便提取所需数据。
- CSS选择器:利用CSS选择器从HTML中快速定位并提取所需数据。
- 文件操作:将爬取到的数据保存到本地文件中,以便后续使用。
三、步骤分析
接下来,我们将详细讲解爬虫的具体步骤,并穿插相关代码。
-
环境准备
首先,确保安装了所需的模块。使用以下命令安装
requests
和parsel
模块:pythonpip install requests parsel
-
构建基本的爬虫程序
我们将通过一个简单的循环来遍历多个页面并获取每一章节的内容:
pythonimport requests import parsel for page in range(1, 44): # 假设小说有43章 url = f'https://b.faloo.com/1163585_{page}.html' # 拼接URL headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36' } response = requests.get(url=url, headers=headers) # 发送请求
在这段代码中,我们使用循环遍历1到43的页码,根据页码动态构建小说的URL,并在请求中添加
User-Agent
头信息,以模拟浏览器请求。 -
解析网页内容
获取到响应后,我们需要解析网页中的内容。利用
parsel
库,我们可以提取标题和章节内容:pythonselector = parsel.Selector(response.text) # 解析HTML文档 title = selector.css('.c_l_title h1::text').get().replace('偷吃我外卖被辣哭,问我要索赔? ', '') content_list = selector.css('div.noveContent p::text').getall() # 获取所有段落内容 content = '\n'.join(content_list) # 将段落内容合并为一个字符串
这里,我们使用CSS选择器来提取小说的章节标题和内容。
get()
方法用于获取单个元素,而getall()
方法则返回所有匹配的元素列表。 -
保存数据到文件
最后,我们将提取到的数据存储到本地文件中。这样,我们可以在程序运行完成后方便地查看爬取到的小说内容:
pythonwith open('偷吃我外卖被辣哭,问我要索赔?.txt', mode='a', encoding='utf-8') as f: f.write(title + '\n') # 写入标题并换行 f.write(content + '\n\n') # 写入内容并换行
这个代码块将逐章写入标题和内容,并用换行符将其分隔开。
四、爬取结果
完成代码后,运行爬虫程序。如果一切顺利,你将在当前工作目录下找到一个名为《偷吃我外卖被辣哭,问我要索赔?.txt》的文件,文件中将包含小说的所有章节内容,整齐且易于阅读。
五、完整代码
以下是整个爬虫代码的整合版,方便大家查看和使用:
python
import requests
import parsel
for page in range(1, 44): # 遍历小说的所有页面
url = f'https://b.faloo.com/1163585_{page}.html' # 生成页面URL
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
}
response = requests.get(url=url, headers=headers) # 发送请求并获取响应
selector = parsel.Selector(response.text) # 解析响应内容
title = selector.css('.c_l_title h1::text').get().replace('偷吃我外卖被辣哭,问我要索赔? ', '') # 提取标题
content_list = selector.css('div.noveContent p::text').getall() # 提取内容
content = '\n'.join(content_list) # 合并内容列表为字符串
with open('偷吃我外卖被辣哭,问我要索赔?.txt', mode='a', encoding='utf-8') as f:
f.write(title + '\n') # 写入标题并换行
f.write(content + '\n\n') # 写入内容并换行
通过本次分享,大家不仅能够学会如何获取网页中的信息,还能锻炼自己的编程能力。希望这篇文章对你有所帮助,欢迎在评论区交流和分享你的经验和心得。
文中所用的完整源代码已经打包好了,还有Python&PyCharm安装包 激活码以及Python全套学习资料,需要的宝子【点击领取】或者扫描下方CSDN官方微信进行领娶