Python爬虫技巧:如何高效地爬取网络小说并保存到数据库!

Python是一门强大的编程语言,在网络爬虫方面也有着广泛的应用。本文将介绍如何使用Python爬取网络小说,并将其保存到数据库中。

首先,我们需要了解要爬取的网站的结构和数据格式。以笔者熟悉的笔趣阁(https://www.biquge5200.cc/)为例,每本小说的章节都以一个链接的形式呈现在小说目录页面上。

我们可以从小说目录页面获取每个章节的链接,然后通过这些链接访问每个章节的内容,并将其保存到数据库中。

接下来,我们需要安装所需的Python库。本文使用的是requests、BeautifulSoup和pymysql库。

requests库用于发送HTTP请求和获取响应,BeautifulSoup库用于解析HTML页面,pymysql库用于连接和操作MySQL数据库。

1pip install requests  
2pip install beautifulsoup4  
3pip install pymysql  

然后我们编写Python代码。首先,我们需要导入所需的库:

1import requests  
2from bs4 import BeautifulSoup  
3import pymysql  

接下来,我们需要连接到MySQL数据库。在本地环境中,我们可以使用XAMPP或MAMP等软件来创建和管理数据库。

在连接到数据库之前,我们需要创建一个数据库和一个数据表来存储小说数据。在MySQL命令行中输入以下命令:

1CREATE DATABASE novel;  
2USE novel;  
3CREATE TABLE IF NOT EXISTS chapters (  
4    id INT NOT NULL AUTO_INCREMENT,  
5    title VARCHAR(255) NOT NULL,  
6    content TEXT NOT NULL,  
7    PRIMARY KEY (id)  
8);  

这将创建一个名为novel的数据库,以及一个名为chapters的数据表,其中包含id、title和content三个字段。

id字段是一个自增的整数,title和content字段分别用于存储章节标题和内容。

接下来,我们需要定义一个函数来获取小说目录页面的HTML代码,并从中提取每个章节的链接。

对于笔趣阁网站,每个小说的目录页面的URL格式为“https://www.biquge5200.cc/xiaoshuodaquan/”,其中xiaoshuodaquan是小说的ID。

因此,我们可以使用格式化字符串来构造目录页面的URL。该函数的代码如下:

 1def get_chapter_urls(novel_id):  
 2    url = f'https://www.biquge5200.cc/{novel_id}/'  
 3    res = requests.get(url)  
 4    soup = BeautifulSoup(res.text, 'html.parser')  
 5    links = soup.select('#list a')  
 6    urls = []  
 7    for link in links:  
 8        url = link.get('href')  
 9        if url.startswith('/'):  
10            url = f'https://www.biquge5200.cc{url}'  
11        urls.append(url)  
12    return urls

在这个函数中,我们首先构造目录页面的URL,然后使用requests库向服务器发送HTTP请求,并使用BeautifulSoup库解析HTML代码。

我们可以使用CSS选择器“#list a”来选择所有章节链接的元素。

然后,我们从每个链接中提取URL,并将其添加到一个列表中。最后,我们返回该列表。

接下来,我们需要定义一个函数来获取每个章节的HTML代码,并从中提取章节标题和内容。该函数的代码如下:

1def get_chapter_content(url):  
2    res = requests.get(url)  
3    soup = BeautifulSoup(res.text, 'html.parser')  
4    title = soup.select_one('.bookname h1').text  
5    content = soup.select_one('#content').text  
6    return title, content  

在这个函数中,我们首先使用requests库向服务器发送HTTP请求,并使用BeautifulSoup库解析HTML代码。

然后,我们使用CSS选择器“.bookname h1”和“#content”来选择章节标题和内容的元素,并从中提取文本。最后,我们返回标题和内容。

最后,我们需要定义一个主函数来连接到数据库、获取章节链接、获取章节内容,并将其保存到数据库中。该函数的代码如下:

 1def main(novel_id):  
 2    conn = pymysql.connect(  
 3        host='localhost',  
 4        user='root',  
 5        password='',  
 6        database='novel'  
 7    )  
 8    urls = get_chapter_urls(novel_id)  
 9    for url in urls:  
10        title, content = get_chapter_content(url)  
11        with conn.cursor() as cursor:  
12            sql = 'INSERT INTO chapters (title, content) VALUES (%s, %s)'  
13            cursor.execute(sql, (title, content))  
14            conn.commit()  
15    conn.close()

在这个函数中,我们首先使用pymysql库连接到数据库。然后,我们获取小说的所有章节链接,并使用for循环遍历每个链接。

对于每个链接,我们使用get_chapter_content函数获取章节标题和内容,并使用pymysql库将它们插入到数据表中。最后,我们关闭数据库连接。

现在我们已经编写了Python代码,可以使用以下命令来运行它:

1main('123456')  

其中,123456是小说的ID,可以替换为任何其他小说的ID。运行代码后,我们可以在MySQL命令行中执行以下命令,来查看数据表中的数据:

1SELECT * FROM chapters;  

以上就是使用Python爬取网络小说并保存到数据库的完整过程。需要注意的是,爬取网络小说可能涉及版权问题,请在合法授权的情况下进行。

🤝 期待与你共同进步

🌱 亲爱的读者,非常感谢你每一次的停留和阅读!你的支持是我们前行的最大动力!🙏

🌐 在这茫茫网海中,有你的关注,我们深感荣幸。你的每一次点赞👍、收藏🌟、评论💬和关注💖,都像是明灯一样照亮我们前行的道路,给予我们无比的鼓舞和力量。🌟

📚 我们会继续努力,为你呈现更多精彩和有深度的内容。同时,我们非常欢迎你在评论区留下你的宝贵意见和建议,让我们共同进步,共同成长!💬

💪 无论你在编程的道路上遇到什么困难,都希望你能坚持下去,因为每一次的挫折都是通往成功的必经之路。我们期待与你一起书写编程的精彩篇章! 🎉

🌈 最后,再次感谢你的厚爱与支持!愿你在编程的道路上越走越远,收获满满的成就和喜悦

关于Python学习指南


如果你对Python感兴趣,想通过学习Python获取更高的薪资,那下面这套Python学习资料一定对你有用!

资料包括:Python安装包+激活码、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等学习教程。0基础小白也能听懂、看懂,跟着教程走,带你从零基础系统性地学好Python!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述
二、Python学习软件

工欲善其事,必先利其器。学习Python常用的开发软件都在这里了!
在这里插入图片描述
三、Python入门学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述

四、Python练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

五、Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。这份资料也包含在内的哈~在这里插入图片描述

六、Python面试资料

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述
七、资料领取

上述完整版Python全套学习资料已经上传CSDN官方,需要的小伙伴可自行微信扫描下方CSDN官方认证二维码免费领取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值