爬虫实战--- (7)采集飞卢小说内容

目录

前言

一、爬取目标

二、所涉及知识点

三、步骤分析

1. 环境准备

2. 构建基本的爬虫程序

3. 解析网页内容

4. 保存数据到文件

四、爬取结果

五、完整代码


前言

在今天的文章中,我们将带大家一起学习使用Python爬虫技术来爬取飞卢小说的内容。本文将分为五个部分:爬取目标、所涉及知识点、步骤分析、爬取结果以及完整代码,希望能帮助大家更好地理解和掌握这项技术。

一、爬取目标

我们本次的目标是爬取飞卢小说网站(网址:https://b.faloo.com/)上某本小说的章节内容。具体来说,我们会聚焦于一部名为《偷吃我外卖被辣哭,问我要索赔?》的小说。通过分析其网页结构,我们将实现对小说标题和内容的自动获取,便于后续的阅读或者数据分析。

二、所涉及知识点

在这一爬虫项目中,我们需要了解以下几个核心知识点:

  1. HTTP请求和响应:了解如何使用HTTP协议来获取网页数据。

  2. Python第三方库
    • requests:用于发送网络请求并获取网页内容。

    • parsel:用于解析HTML文档,可以轻松提取所需的数据。

  3. CSS选择器:借助CSS选择器从HTML中快速定位和提取数据。

  4. 文件操作:将爬取到的数据写入本地文件中,以便后续使用。

三、步骤分析

接下来,让我们详细讲解爬虫的具体步骤,并穿插相关代码。

1. 环境准备

首先,我们需要确保安装了所需的模块。可以通过以下命令来安装requestsparsel模块:

pip install requests parsel

2. 构建基本的爬虫程序

我们将通过一个简单的循环来遍历多个页面并获取每一章节的内容:

import 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头信息,以模拟浏览器请求。

3. 解析网页内容

获取到响应后,我们要解析网页中的内容。利用parsel库,我们可以提取标题和章节内容:

    selector = 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()则返回所有匹配的元素列表。

4. 保存数据到文件

最后,我们将提取到的数据存储到本地文件中。这使得我们可以在程序运行完成后,方便地查看爬取到的小说内容:

    with open('偷吃我外卖被辣哭,问我要索赔?' + '.txt', mode='a', encoding='utf-8') as f:
        f.write(title)  # 写入标题
        f.write('\n')  # 换行
        f.write(content)  # 写入内容
        f.write('\n')  # 换行

这个代码块将逐章写入标题和内容,并用换行符将其分隔开。

四、爬取结果

完成代码后,我们可以运行爬虫程序。如果一切顺利,我们将会在当前工作目录下找到一个名为《偷吃我外卖被辣哭,问我要索赔?.txt》的文件,文件中将包含小说的所有章节内容,整齐且易于阅读。

五、完整代码

最后,我们将整个爬虫代码整合在一起,方便大家查看和使用:

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)  # 写入标题
        f.write('\n')  # 换行
        f.write(content)  # 写入内容
        f.write('\n')  # 换行

以上就是我们今天分享的内容,透过这个爬虫程序,大家不仅能够学会如何获取网页中的信息,还能锻炼自己的编程能力。希望对大家有所帮助,欢迎在评论区交流和分享!

文章持续跟新,可以微信搜一搜公众号  rain雨雨编程 ],或扫描下方二维码,第一时间阅读,涉及爬虫,机器学习,Java编程,实战项目等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值