如何用 Python 爬取小说章节并保存为文本文件

在这个博客文章中,我们将介绍如何使用 Python 爬取小说章节并将其保存为文本文件。我们将使用 requestsparsel 库来实现这一功能,下面是详细的步骤和代码示例。

1.准备工作

首先,我们需要安装了 requestsparsel 这两个 Python 库,通过pip指令进行安装

pip install requests parsel

2. 爬取小说章节

我们的目标是从指定的小说页面抓取章节标题和内容。下面是一个简单的 Python 脚本,演示了如何实现这一目标。

首先我们定义了一个fetch_novel_chapter 函数,

这个函数的作用是从指定的 URL 获取小说章节的标题和内容:

  • 请求和响应:使用 requests.get 发送 HTTP GET 请求,并设置用户代理头部 User-Agent 以避免被网站拒绝。
  • 解析 HTML:利用 parsel.Selector 解析响应的 HTML 文本。
  • 提取数据:使用 CSS 选择器 .bookname h1::text 获取标题,使用 #content::text 获取内容。
def fetch_novel_chapter(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
    }
    
    # 发送请求
    response = requests.get(url=url, headers=headers)
    response.encoding = response.apparent_encoding
    
    # 转换成 selector 解析对象
    selector = parsel.Selector(response.text)
    
    # 获取小说标题
    title = selector.css('.bookname h1::text').get()
    # 获取小说内容 返回的是 list
    content_list = selector.css('#content::text').getall()
    # 将列表转换成字符串
    content_str = ''.join(content_list)
    
    return title, content_str

然后我们定义了一个save_to_file 函数,

该函数负责将抓取到的标题和内容保存到一个文本文件中:

  • 文件名处理:替换标题中的非法字符(如 / 和 \),确保文件名有效。
  • 写入文件:将内容写入文件,使用 UTF-8 编码来支持中文字符。

最后我们在主程序去运行上面的函数,并保存到指定的txt文档当中:

if __name__ == '__main__':
    # 第一章小说url地址
    url = 'http://www.biquges.com/52_52642/25585323.html'
    title, content = fetch_novel_chapter(url)
    
    # 打印标题和内容(可选)
    print(title)
    print(content[:1000])  # 打印前1000个字符以避免输出过多内容
    
    # 保存到文件
    save_to_file(title, content)

 3.爬取txt文档如下:

因为txt文档在保存时没有处理数据,所以出现了一些空格

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值