百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

手把手教你使用Python网络爬虫下载一本小说(附源码)

off999 2024-09-16 00:43 36 浏览 0 评论

大家好,我是Python进阶者。

前言

前几天【磐奚鸟】大佬在群里分享了一个抓取小说的代码,感觉还是蛮不错的,这里分享给大家学习。


一、小说下载

如果你想下载该网站上的任意一本小说的话,直接点击链接进去,如下图所示。

只要将URL中的这个数字拿到就可以了,比方说这里是951,那么这个数字代表的就是这本书的书号,在后面的代码中可以用得到的。


二、具体实现

这里直接丢大佬的代码了,如下所示:

# coding: utf-8
'''
笔趣网小说下载
仅限用于研究代码
勿用于商业用途
请于24小时内删除
'''
import requests
import os
from bs4 import BeautifulSoup
import time




def book_page_list(book_id):
    '''
    通过传入的书号bookid,获取此书的所有章节目录
    :param book_id:
    :return: 章节目录及章节地址
    '''
    url = 'http://www.biquw.com/book/{}/'.format(book_id)
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'}
    response = requests.get(url, headers)
    response.encoding = response.apparent_encoding
    response = BeautifulSoup(response.text, 'lxml')
    booklist = response.find('div', class_='book_list').find_all('a')
    return booklist




def book_page_text(bookid, booklist):
    '''
    通过书号、章节目录,抓取每一章的内容并存档
    :param bookid:str
    :param booklist:
    :return:None
    '''
    try:
        for book_page in booklist:
            page_name = book_page.text.replace('*', '')
            page_id = book_page['href']
            time.sleep(3)
            url = 'http://www.biquw.com/book/{}/{}'.format(bookid,page_id)
            headers = {
                'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'}
            response_book = requests.get(url, headers)
            response_book.encoding = response_book.apparent_encoding
            response_book = BeautifulSoup(response_book.text, 'lxml')
            book_content = response_book.find('div', id="htmlContent")
            with open("./{}/{}.txt".format(bookid,page_name), 'a') as f:
                f.write(book_content.text.replace('\xa0', ''))
                print("当前下载章节:{}".format(page_name))
    except Exception as e:
        print(e)
        print("章节内容获取失败,请确保书号正确,及书本有正常内容。")




if __name__ == '__main__':
    bookid = input("请输入书号(数字):")
    # 如果书号对应的目录不存在,则新建目录,用于存放章节内容
    if not os.path.isdir('./{}'.format(bookid)):
        os.mkdir('./{}'.format(bookid))
    try:
        booklist = book_page_list(bookid)
        print("获取目录成功!")
        time.sleep(5)
        book_page_text(bookid, booklist)
    except Exception as e:
        print(e)
        print("获取目录失败,请确保书号输入正确!")

程序运行之后,在控制台输入书号,即可开始进行抓取了。

在本地也会自动新建一个书号命名的文件夹,在该文件夹下,会存放小说的章节,如下图所示。


三、常见问题

在运行过程中小伙伴们应该会经常遇到这个问题,如下图所示。

这个是因为访问太快,网站给你反爬了。可以设置随机的user-agent或者上代理等方法解决。


四、总结

我是Python进阶者。这篇文章主要给大家介绍了小说内容的获取方法,基于网络爬虫,通过requests爬虫库和bs4选择器进行实现,并且给大家例举了常见问题的处理方法。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

相关推荐

win11分区教程(win11磁盘分区形式)

在安装win11时,可以选择自定义分区,进入磁盘管理界面,选择要安装win11的磁盘,点击新建分区,设置分区大小和分区盘符,注意不要覆盖原有数据分区。建议将系统分区和数据分区分开,以便备份和维护。安装...

win7双系统怎么切换(双系统win7切换win10)

要切换到其他操作系统,必须使用另一个启动设备或安装系统。以下是一些步骤:1.获取安装媒体(光盘或USB驱动器),包含您要安装的操作系统。2.在Windows7上打开电脑,将安装媒体插入计算机。3...

project2010激活码(project2010永久激活码)

首先我们在网上下载project2010,因为project2010是付费使用的,所以我们可以先使用试用版,试用版期限是30天。首先我们来创建一个项目,然后使用project2010来进行管理。我们可...

迈克菲无法卸载(迈克菲无法卸载怎么解决)

一,找到迈克菲的图标二,右键,点击更改设置——实时扫描三,点击关闭,即可。1,控制面板中-管理工具-服务-停止MCAFEEFRAMEWORKMANAGER服务2,开始中—运行—输入cmd—输入“C...

爱普生打印机驱动(爱普生打印机驱动怎么安装)

1.首先进入爱普生网站。找到驱动以及手册证书下载2.选择打印机的类型,勾选正确的打印机型号。3.根据自己的电脑操作系统选择对应的软件版本点击下载。4.下载了LQ-630KII的驱动,双击运行。5.运行...

windows7显示不是正版怎么办

不必担心,是不是正版影响并不大,不会影响你正常使用电脑,无非就是心里对于正版和盗版的道德观念会有点小执念罢了,但这些都不影响系统的正常使用。如果你非要安装正版,可以去买个正版光盘,安装系统后输入正版激...

vivo手机锁屏密码忘了怎么办

如下:1输入密码在vivo的锁屏页面,连续输入五次错误密码,弹出新页面。2/4选择忘记密码在新的页面中,找到页面中的忘记密码这个选项,点击它。3/4进行身份验证切换到身份验证的页面后,回答两个问题,再...

微软官网免费下载win7吗(微软官网免费下载win10是真的吗)
微软官网免费下载win7吗(微软官网免费下载win10是真的吗)

最简单的方法就是,下载完镜像文件后,直接把镜像文件解压,解压到非C盘,然后在解压文件里面找到setup.exe,点击运行即可。安装系统完成后,在C盘找到一个Windows.old(好几个GB,是旧系统打包在这里,垃圾文件了)删除即可。扩展资...

2025-12-17 00:51 off999

windows7的密钥在哪里(windows7密钥在哪里可以找到)

查看Windows7的密钥,你可以按照以下步骤进行操作:在键盘上按下Win+R组合键,打开运行窗口。在运行窗口中输入"regedit",然后点击确定,打开注册表编辑器。在注册表编...

360极速浏览器打不开网页(360极速浏览器经常打不开未响应)

先打开任务管理器结束360浏览器的所有进程(如果有).再尝试点击启动.如果还不行,重启电脑再试,如果还不行,执行杀毒检测和磁盘扫描,并卸载重装浏览器.强制360浏览器以极速模式打开页面方法如下:1、...

win7系统图标(win7系统图标网络开关灰色)

1/6首先点击桌面右下角Windows,再点击【控制面板】2/6来到控制面板页面,我们再点击【个性化】3/6来到个性化页面,我们再点击左侧【更改桌面图标】4/6弹出桌面图标设置对话框,我们根据实际需要...

系统的超级宗门等级(系统的超级宗门人物介绍)

《一念永恒》中宗门等级划分分为:顶级宗门、一流宗门、二流宗门、三流宗门和小宗门。顶级宗门位于武道源头,是无数武极强者梦寐以求的存在。一流宗门规模庞大,经济实力雄厚,拥有大量高手强者,地位颇为显赫。二流...

为啥系统重装后有两个系统(为啥系统重装后有两个系统 原来的系统还在)

电脑重装系统后有两个系统,需要重新安装,并且再安装系统时需要把原来的系统所在盘即C盘进行格式化,否则安装完成就还是两个系统,非常占系统内存。1、可能在安装时删除了原来的引导分区。2、可能安装时直接安装...

win10win7双系统引导设置(win10 win7双系统引导)

 步骤如下:  1、首先我是开机时按F8,进入安全模式界面。但是进去的时候等待了几分钟都无反应,上面一直显示请稍等。  2、没办法只有按下复位键重启电脑,因电脑之前装有一键GHOST备份,于是果断还原...

ie缓存清理在哪里(ie缓存如何清除)

?  1、首先打开IE浏览器,选择IE浏览器的工具这一选项;  2、下一步选择工具中的Internet的选项;  3、下一步就是在Internet选项中的常规的选项中;  4、选择常规--浏览历史记录...

取消回复欢迎 发表评论: