python爬取笔趣阁小说

本文介绍了如何使用Python的requests和BeautifulSoup库爬取笔趣阁网站上的小说内容。首先,通过requests获取HTML源码,然后利用BeautifulSoup解析HTML,提取正文内容。接着,解析章节链接,获取每个章节的名称和内容。最后,将所有章节内容整合并保存到文本文件中。
摘要由CSDN通过智能技术生成

笔趣看是一个盗版小说网站,这里有很多起点中文网的小说,该网站小说的更新速度稍滞后于起点中文网正版小说的更新速度。并且该网站只支持在线浏览,不支持小说打包下载。所以可以通过python爬取文本信息保存,从而达到下载的目的

以首页的《一念永恒》作为测试:

1、先查看第一章地址中的html文本:https://www.biqukan.com/1_1094/5403177.html

通过requests库获取:

# -*- 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)

运行代码,可以看到如下结果:(获取到他的html文本,你可以通过chrome审查元素来对照)
在这里插入图片描述
可以看到,我们很轻松地获取了HTML信息。但是,很显然,很多信息是我们不想看到的,我们只想获得如右侧所示的正文内容,我们不关心div、br这些html标签。如何把正文内容从这些众多的html标签中提取出来呢?这就是本次实战的主要内容。

Beautiful Soup
爬虫的第一步,获取整个网页的HTML信息,我们已经完成。接下来就是爬虫的第二步,解析HTML信息,提取我们感兴趣的内容。对于本小节的实战,我们感兴趣的内容就是文章的正文。提取的方法有很多,例如使用正则表达式、Xpath、Beautiful Soup等。对于初学者而言,最容易理解,并且使用简单的方法就是使用Beautiful Soup提取感兴趣内容。

Beautiful Soup的安装方法和requests一样(我安装的是3.7版本):

pip3 install beautifulsoup4
Beautiful Soup中文的官方文档:http://beautifulsoup.readthedocs.io/zh_CN/latest/

通过google chrome中审查元素方法,查看一下我们的目标页面,你会看到如下内容:
在这里插入图片描述
可以看到文本内容都放置在<div id=“content”, class=“showtxt”>这个标签中 ,这样就可以开始通过库来获取这个标签中的内容:

# -*- 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)
     bf = BeautifulSoup(req.text)
     #查询所有div标签,并且class为'showtxt'
     texts = bf.find_all('div', class_ = 'showtxt') print(texts)

获取到如下内容:

在这里插入图片描述
我们可以看到,我们已经顺利匹配到我们关心的正文内容,但是还有一些我们不想要的东西。比如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')
     #replace(‘\xa0’*8,’\n\n’)就是去掉八个空格符号,并用回车代替
     print(texts[0].text.replace('\xa0'*8,'\n\n'))

find_all匹配的返回的结果是一个列表。提取匹配结果后,使用text属性,提取文本内容,滤除br标签。随后使用replace方法,剔除空格,替换为回车进行分段。 在html中是用来表示空格的。replace(‘\xa0’*8,’\n\n’)就是去掉下图的八个空格符号,并用回车代替:
在这里插入图片描述
程序运行结果如下:
在这里插入图片描述
我们已经顺利获得了一个章节的内容,要想下载正本小说,我们就要获取每个章节的链接。我们先分析下小说目录:
在这里插入图片描述
通过审查元素,我们发现可以发现,这些章节都存放在了class属性为listmain的div标签下,选取部分html代码如下:

<div class="listmain">
<dl>
<dt>《一念永恒》最新章节列表</dt>
<dd><a href="/1_1094/15932394.html">1027章 第十道门</a></dd>
<dd><a href="/1_1094/15923072.html">1026章 绝伦道法!</a></dd>
<dd><a href="/1_1094/15921862.html">1025章 长生灯!</a></dd>
<dd><a href="/1_1094/15918591.html">1024章 一目晶渊</a></dd>
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值