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

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

off999 2024-09-16 00:43 44 浏览 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学习交流群共同探讨学习。

相关推荐

免费在线影视观看网站(在线观看影视剧网址)

有蛮多的,茶杯狐影视,555影视,首播影院都是可以看电影的免费网址,里面有很多最新更新的电影,综艺,电视剧,动漫,可以收藏起来目前有许多观看最新电影的网站可供选择。其中一些知名的网站包括Netflix...

4399造梦西游3(4399造梦西游3账号)

在4399造梦西游三中,要进入下界需要完成一定的任务。首先,需要完成主线任务“寻找下界之门”,该任务需要完成一系列的支线任务,包括“寻找下界之钥”、“寻找下界之路”等。完成这些任务后,就可以进入下界了...

原来的琪琪电影在线看(原来琪琪电影在线看免费)

186x2=372原来多372张

python编程软件(python编程软件怎么读)

学点编程是一款手机编程应用,这款软件界面漂亮,功能强大,支持多种语言,内容丰富,编程的程序员们可千万不要错过啦!应用包含一张涵盖了所有HTML5元素释义的列表,并能查看元素在内置浏览器中实现的样式...

google play apk(Google play apk English)

googleplay是一款谷歌开发的、用于帮助用户加快游戏软件运转速度的软件。该软件可以快速与谷歌游戏中心连接,从而加快游戏同步数据的传输。  如果用户不需要使用该软件了,则可以尝试直接使用卸载功能卸...

单人枪战单机游戏(单人枪战闯关游戏)

有胡闹厨房,NBA2K,Knack纳克,光环战斗进化,杀手5赦免。钓鱼星球。神鬼寓言,战争机器,精灵与森林,盗贼之海,丧尸围城枪火重生,这是融合了第一人称射击、Roguelite随机元素和RPG策略...

三国战纪街机版下载(三国战纪街机版下载教程)

三国战纪单机手机版非常容易上手,可以通过以下步骤进行玩耍:容易上手。游戏的操作非常简单,只需要用手指点击屏幕即可完成。游戏同时提供了简单、普通、困难等多个难度设置,能够满足不同玩家的需求。在游戏中,玩...

永久免费的网盘哪个好用(百度网盘登录入口)

现在的网盘很多都是免费的哦,而且也很安全,我自己就在用天翼云网盘。天翼云虽然刚登陆是15G,但是现在登陆客户端就有10T的容量了,可以存很多东西了。天翼云网盘还有个挺好的功能叫做私密空间,每次登陆都要...

热血传奇官方正版下载(热血传奇官网下载安装)

1.可以通过官方网站或者应用商店下载热血传奇。2.热血传奇作为一款热门的网络游戏,开发商通常会提供官方网站或者在应用商店上架,方便玩家下载和安装。3.此外,还可以通过一些第三方游戏平台或者论坛等...

经典老歌500首铃声(免费设为铃声的歌曲)

许慧欣七月七日晴黄格选春水流任贤齐沧海一声笑杨培安我相信邓丽君路边的野花不要采乌兰托娅套马杆索朗扎西姑娘我爱你刀郎情人西域刀郎寻找玛依拉林依轮透过开满鲜花的月亮...

网页黄冈大推广(黄冈宣传)

意思是职称通过了最终审核,已被批准,也就意味着职称稳了,可以享受其相应的待遇了。职称,指教授,讲师,中级,高级等专业技术等级。终审,指最终审核。通过,指批准了。职称终审通过多指工作在技术,学术行业领城...

可以插二次元角色的游戏ios(二次元插图软件)

决战平安京,和光影对决,就是二次元moba游戏其中决战平安京的画质什么的,个人感觉更好~推荐“影视大全-人人美剧视频影视大全苹果版App”。这是一款资源最全的影视苹果端追剧应用,汇聚全网电影、电视剧、...

手机字体上面带拼音(手机字体上面带拼音怎么取消)
手机字体上面带拼音(手机字体上面带拼音怎么取消)

通过修改手机中的字体来设置的,方法如下(以华为mate8手机为例):1、首先,在华为手机上找到系统自带的主题的应用软件,并点击打开它。2、然后,在打开的主题界面点击底部的字体的标签栏目。3、接着,在字体的界面上方的搜索框中输入“拼音”,并进...

2026-02-03 22:51 off999

国内国外精品影视网站(国外影视网站排行)

影视大全强烈推荐的视频app影视大全。是一款作品非常多,大多数都是免费,无广告,无弹窗。它上面也实时更新一些影视作品。有一些在其他影视app中搜索不到,或者收费的作品,在他上面,都是免费的。同时呢,这...

2345网址导航官网(2345网址导航官网官方下载)

搜了好多办法,修改主页,修改host文件,查找注册表。最后我的解决方案是:删除可能携带病毒的软件,修改浏览器主页,(此时chrome浏览器的主页依然是2345),然后新建一个chrome的快捷方式替...

取消回复欢迎 发表评论: