现在有很多小说为了保护作者版权,都是需要收费的,可你又想看怎么办?今天我来教你怎么解决这个问题
先举个例子,我们来看下《一念永恒》小说的第一章内容,URL:http://www.biqukan.com/1_1094/5403177.html
我们先获取HTML信息试一试,编写代码如下:
# -*- coding:UTF-8 -*-
import requests
if __name__ == '__main__':
target = 'http://www.biqukan.com/1_1094/5403177.html'
req = requests.get(url=target)
print(req.text)
运行后就能看到如下
看到这很多人就会发现有好多都是不需要的,所以我们就要把其中正文部分提取出来
然后,我们使用审查元素方法,查看一下我们的目标页面,你会看到如下内容
不难发现,文章的所有内容都放在了一个名为div的“东西下面”,这个"东西"就是html标签。HTML标签是HTML语言中最基本的单位,HTML标签是HTML最重要的组成部分。
细心的朋友可能就能发现一个事实,class属性为showtxt的div标签,独一份!这个标签里面存放的内容,是我们关心的正文部分。
知道这个信息,我们就可以使用Beautiful Soup提取我们想要的内容了,编写代码如下:
# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests
if __name__ == "__main__":
target = 'http://www.biqukan.com/1_1094/5403177.html'
req = requests.get(url = target)
html = req.text
bf = BeautifulSoup(html)
texts = bf.find_all('div', class_ = 'showtxt') print(texts)
在解析html之前,我们需要创建一个Beautiful Soup对象。BeautifulSoup函数里的参数就是我们已经获得的html信息。然后我们使用find_all方法,获得html信息中所有class属性为showtxt的div标签。find_all方法的第一个参数是获取的标签名,第二个参数class_是标签的属性,为什么不是class,而带了一个下划线呢?因为python中class是关键字,为了防止冲突,这里使用class_表示标签的class属性,class_后面跟着的showtxt就是属性值了。看下我们要匹配的标签格式:
这样对应的看一下,是不是就懂了?可能有人会问了,为什么不是find_all(‘div’, id = ‘content’, class_ = ‘showtxt’)?这样其实也是可以的,属性是作为查询时候的约束条件,添加一个class_='showtxt’条件,我们就已经能够准确匹配到我们想要的标签了,所以我们就不必再添加id这个属性了。运行代码查看我们匹配的结果:
我们可以看到,我们已经顺利匹配到我们关心的正文内容,但是还有一些我们不想要的东西。比如div标签名,br标签,以及各种空格。怎么去除这些东西呢?我们继续编写代码:
# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests
if __name__ == "__main__":
target = 'http://www.biqukan.com/1_1094/5403177.html'
req = requests.get(url = target) html = req.text
bf = BeautifulSoup(html)
texts = bf.find_all('div', class_ = 'showtxt')
print(texts[0].text.replace('\xa0'*8,'\n\n'))
find_all匹配的返回的结果是一个列表。提取匹配结果后,使用text属性,提取文本内容,滤除br标签。随后使用replace方法,剔除空格,替换为回车进行分段。 在html中是用来表示空格的。replace(’\xa0’*8,’\n\n’)就是去掉下图的八个空格符号,并用回车代替:
就能得到如下结果
可以看到,我们很自然的匹配到了所有正文内容,并进行了分段。我们已经顺利获得了一个章节的内容,要想下载正本小说,我们就要获取每个章节的链接。我们先分析下小说目录:
URL:http://www.biqukan.com/1_1094/
由于文章内容比较多,篇幅不允许,部分内容未展示。如有需要获取完整的资料文档的朋友点赞+评论,即可免费获取。
相关推荐

弹窗拦截怎么设置?多种途径拦截弹窗
在浏览电脑页面的时候,电脑有时会弹出很多弹窗,影响用户体验。弹窗拦截怎么设置?为您介绍几种实用的方法。 方法一. 使用浏览器自带的

1997年1元硬币值多少钱 97年牡丹1元硬币最新价格
1997年1元硬币值多少钱?牡丹一元硬币共发行了1991年至2000年十个年份。2000年的时候并没有在市场上流通牡丹一元,仅仅发行了20000套作为硬币套

如何正确设置路由器LAN口,提高家庭网络效率
在现代家庭中,路由器已成为连接互联网的重要设备。而如何有效地设置路由器的LAN口,则直接关系到网络的稳定性和速度。本文将介绍一些简

巫師3銀行在哪(攻略)
《巫師3》的銀行在諾維格瑞城中,地圖上一個標記金錢的位置就是,就是一開始看火刑的那個廣場,銀行就在那裡,是個矮人NPC。 銀行位置一

怎么关闭全民k歌
随着数字娱乐的普及,全民K歌作为一款广受欢迎的K歌应用,为用户提供了展示歌喉、分享音乐的平台。然而,当用户决定暂时或永久离开这个

游戏中ggwp是什么意思是礼貌用语吗(ggwp是友好还是嘲讽)
ggwp,英语缩写,全写为“good game well played”。电竞游戏用语,意为这场比赛打的很好,表示赞赏,老外打游戏时用得很

江西省高考成绩公布时间及查询方式(2025年参考)
江西省高考成绩公布时间一般在每年的6月下旬。如江西省2024年普通高考成绩拟于6月23日9时公布。可以通过江西省教育考试院官网、"江西省教育

一文解锁!电信大王卡 19 元无限流量包 3 种开通方式全攻略
在流量需求日益增长的当下,电信大王卡 19 元无限流量包凭借实惠的价格和丰富的流量,成为不少用户的热门选择。但很多人还不清楚该如何开

敷宣的意思
敷宣詞語意思:傳播,宣揚。分詞解釋:宣揚:1.廣泛傳布;傳揚。 2.謂張揚于外。 3.對眾講解﹑說明。 4.高聲念誦。傳播:①散布開去:傳播技

《诛仙》3月21日抢先体验服例行维护公告
亲爱的仙友: 为了给玩家创造更加安全稳定的游戏环境,《诛仙》将于2025年3月21日上午8:00-10:00对“抢先体验服—先知”进行停机维护。预计停

铪元素是怎么被发现的?有什么用途?
铪的发现英国物理学家莫斯莱对元素的X射线研究后,确定在钡和钽之间应当有16个元素存在。这时除了61号元素和72号元素之外,其余14个元素都
![[讨论]IMPK 12月开新赛季 是不是在作死?](/0.jpg)
[讨论]IMPK 12月开新赛季 是不是在作死?
查看: 13086 - 回复: 129 [讨论] IMPK 12月开新赛季 是不是在作死? [复制链接] 勇士 不想越狱 当前离线 不想越狱 帖子:893 符文:4 电梯直达 1# 发表