python:爬取网络小说,看这一篇就够了

这篇具有很好参考价值的文章主要介绍了python:爬取网络小说,看这一篇就够了。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明:

        本教程仅供于学习研究使用,请勿用于其他用途。

软件安装:

官网下载visual studio Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (microsoft.com)

python 爬小说,python,python,开发语言

点进网页后下拉找到个人免费版本。点击下载即可。

python 爬小说,python,python,开发语言

1:找到浏览器下载位置,2:选择打开下载文件位置、3:选择双击运行安装程序

python 爬小说,python,python,开发语言

点击继续

python 爬小说,python,python,开发语言

等待下载完成后,勾选对python 的开发。

python 爬小说,python,python,开发语言

最后等待安装完毕即可。

新建工程:

一般安装完成后桌面是没有图标的的我们要去系统栏进行搜索。

python 爬小说,python,python,开发语言

python 爬小说,python,python,开发语言

选择创建新项目。

python 爬小说,python,python,开发语言

1、点击下拉选项,2、找到python 项目

python 爬小说,python,python,开发语言

1、选择python应用程序,2、点击确定

python 爬小说,python,python,开发语言

1、程序名称,2、程序存放位置,可自行修改,3、勾选,4、创建

python 爬小说,python,python,开发语言

创建后如以下界面:

python 爬小说,python,python,开发语言

输入测试代码:

print("hello world")

点击启动按钮

python 爬小说,python,python,开发语言

查看运行结果。

python 爬小说,python,python,开发语言

到此我们的新建工程就完毕。

导入python 包:

需要导入的第三方包有两个,是requests和BeautifulSoup,其中一个是用于网页请求的,一个是网页解析的。

import requests
from bs4 import BeautifulSoup

直接运行会报以下错误。

python 爬小说,python,python,开发语言错误的含义是没有找到对应的模块。我们要先下载相关的第三方包。

首先我们关闭调试模式后,点击工具-》python-》python环境

python 爬小说,python,python,开发语言

1、右侧输入requests,2、点击安装运行命令 pip install requests

python 爬小说,python,python,开发语言

如果弹出提升权限点击立即提升即可

python 爬小说,python,python,开发语言

显示此提升表明安装第三方包成功了

python 爬小说,python,python,开发语言

同样的步骤导入bs4

python 爬小说,python,python,开发语言

如果是其他编译环境就就采用以下命令即可。

pip install requests
pip install bs4

 判断爬取网页的编码格式:

定义一个字符串变量内容为需要爬取的小说主页。

# 小说的URL
url = 'https://www.nfxs.com/book/126295/'

字符串来源于百度搜索

python 爬小说,python,python,开发语言 其他小说的话需要更换这个即可。

首先发起一个请求,并通过BeautifulSoup解析出来。

# 请求的URL是'url',这里的'url'只是一个占位符,你需要把实际的URL替换进去  
response = requests.get(url)  
# 设置响应的编码为'utf-8',这样获取到的文本内容就会是'utf-8'编码  
response.encoding = 'utf-8'  
  
# 导入BeautifulSoup库,这个库是Python中用来解析HTML或XML的库  
# 用BeautifulSoup库的'html.parser'解析器来解析从URL获取到的HTML内容  
soup = BeautifulSoup(response.text, 'html.parser')  
  
print(soup)

运行结果如下这是编码格式正确可以进行下一步了。

python 爬小说,python,python,开发语言

文中没有乱码是一个正常的页面返回。

下面是编码格式错误的,我们需要手动调整。

python 爬小说,python,python,开发语言

最常用的两种格式。

response.encoding = 'utf-8'
或者
response.encoding = 'gb2312'

到这里我们的编码格式就能确定下来了。

 获取小说章节链接及标题:

我们将执行的结果网上拉就可看到每个章节的前面带的有他的链接。

python 爬小说,python,python,开发语言

接下来我们要将其取出来,写入以下代码。第一次滤除其他数据

#找到HTML文档中的所有<a>标签(即所有链接)
soup.links = soup.find_all('a')

#遍历所有链接
# 获取小说的章节链接
for a in soup.links:
    print(a)

加入以上代码后输出,我们发现还有一些其他数据

python 爬小说,python,python,开发语言

我们通过修改遍历代码将其他的滤除掉.

## 获取小说的章节链接
for a in soup.links:
    if '.html' in str(a):
        print(a)

通过判断其中是否包含'.html'字符,来将其他滤除掉。

我们再次运行。

 python 爬小说,python,python,开发语言

我们发现其中还是有两个我们不想要的数据。再次修改滤波代码。 

滤除第一种的时候,我们只需要将章节这个也加入判断即可,滤除第二种错误数据我们就需要强行固定序列了,比如我们强行让它从第一章开始。代码如下:

# 获取小说的章节链接
x=1
for a in soup.links:
    if '.html' in str(a) and "第"+str(x)+"章" in str(a):
        print(a)
        x=x+1

再次运行查看结果。

python 爬小说,python,python,开发语言报错咯 ,因为我们用了中文字符,这个是python 编码文件问题。我们在第一行加一行代码:

# coding: utf-8  

再将文件改成utf-8的编码格式即可。

首先找到工具->自定义

python 爬小说,python,python,开发语言

命令-》文件-》添加命令

python 爬小说,python,python,开发语言

文件-》高级保存选项-》确定

python 爬小说,python,python,开发语言 关闭窗口:

python 爬小说,python,python,开发语言

 我们将文件保存为utf-8模式即可。

python 爬小说,python,python,开发语言

选择编码-》保存

python 爬小说,python,python,开发语言

再次运行,我发现此时只有501章了,小说其实有1000多章呢

python 爬小说,python,python,开发语言

我们可以直接去章节目录查看问题。原来是网站存在错别字。

python 爬小说,python,python,开发语言

我们只好再次修改我们将这个错误也加入代码中.

# 获取小说的章节链接
x=1
for a in soup.links:
    if '.html' in str(a) and ("第"+str(x)+"章" in str(a) or "弟"+str(x)+"章" in str(a)):
        print(a)
        x=x+1

再次运行代码。可以发现代码到可以到1000多章了。

python 爬小说,python,python,开发语言

 首先将链接从标签a中取出来。

# 获取小说的章节链接
x=1
for a in soup.links:
    if '.html' in str(a) and ("第"+str(x)+"章" in str(a) or "弟"+str(x)+"章" in str(a)):
        print(str(a['href']))
        x=x+1

运行结果如下。

python 爬小说,python,python,开发语言

我会发现其中链接不全,我们直接通过这种形式肯定不行。我们查看网站网页的命名格式。

python 爬小说,python,python,开发语言

我们每读取一章就要如何通过这个网址来获取,而不是上面那个地方的网页。

我们需要将

/book/13713/18785770.html

转化成下面这种模式 

https://www.biqubao2.com/book/13713/18785770.html

我们发现前面缺少的其实就是我们刚开始的链接,我们使用字符拼接即可。

修改后代码如下所示。

# 获取小说的章节链接
x=1
for a in soup.links:
    if '.html' in str(a) and ("第"+str(x)+"章" in str(a) or "弟"+str(x)+"章" in str(a)):
        tp=str(a['href'])
        print(url[:-12]+tp)
        x=x+1

运行代码结果:

python 爬小说,python,python,开发语言

最后修改代码我们将链接和章节名称保存起来。

# 获取小说的章节链接
x=1
#链接
chapter_links=[]
#章节名称
catalogue=[]

for a in soup.links:
    if '.html' in str(a) and ("第"+str(x)+"章" in str(a) or "弟"+str(x)+"章" in str(a)):
        tp=str(a['href'])
        chapter_links.append(url[:-12]+tp)
        catalogue.append(a.text)
        x=x+1
 
print(chapter_links)
print(catalogue)

运行后发现链接和我们的标题都被保存下来了。

python 爬小说,python,python,开发语言

获取小说并保存:

写入以下代码

# 初始化一个计数器,用于跟踪章节的序号  
i=0  
  
# 对章节链接进行遍历  
for link in chapter_links:  
  
    # 获取每一章的内容  
    chapter_response = requests.get(link)  
  
    # 设置响应对象的编码为utf-8,以正确处理获取到的文本数据  
    chapter_response.encoding = 'utf-8'  
  
    # 使用BeautifulSoup库解析获取到的响应文本,将其转化为一个BeautifulSoup对象  
    # BeautifulSoup是一个用于解析HTML和XML文档的Python库  
    chapter_soup = BeautifulSoup(chapter_response.text, 'html.parser')  
  
    # 在BeautifulSoup对象中寻找id为"myDiv"的div标签  
    # 这通常用于定位网页中的特定区域,以获取其内容  
    # 找到 id 为 "myDiv" 的 div 标签  
    div = chapter_soup.find('div', {'id': 'content'})  
  
    # 从找到的div标签中获取文本内容  
    chapter_text = div.get_text()  
  
    # 打开名为'novel.txt'的文件,以追加模式写入数据  
    # 如果文件不存在,将创建一个新文件  
    # 将章节内容写入文件  
    with open('寒门极品公子.txt', 'a', encoding='utf-8') as f:  
  
        # 将catalogue[i]的内容与一个换行符'\n'拼接,并写入到文件中  
        # catalogue可能是一个列表或其他类型的可索引对象,它包含了各章节的标题或其它标识信息  
        f.write(catalogue[i] + '\n')  
  
        # 将获取到的章节文本内容与一个换行符'\n'拼接,并写入到文件中  
        f.write(chapter_text + '\n')  
  
    # 打印出当前处理的章节编号和状态信息  
    print('第'+str(i)+'章下载完成')  

    time.sleep(5)  # 延时5秒 
# 当所有章节都处理完毕后,打印出小说下载完成的信息  
print('小说下载完成。')

代码的主要内容就是通过单个章节的链接获取到回复,之后找到居中格式的div ,获取其中的文本就是先说内容 这个时候我们将其写入到txt中,知道完成下载,其中延时是必须的,防止影响网站运行,从而导致踩缝纫机的风险。以下是运行结果。

python 爬小说,python,python,开发语言

最后等待下载完成即可.

最后贴一下完整源码。

# coding: utf-8 
import time   
import requests
from bs4 import BeautifulSoup

url='https://www.biqubao2.com/book/13713/'

# 请求的URL是'url',这里的'url'只是一个占位符,你需要把实际的URL替换进去  
response = requests.get(url)  
  
# 设置响应的编码为'utf-8',这样获取到的文本内容就会是'utf-8'编码  
response.encoding = 'utf-8'  
  
# 用BeautifulSoup库的'html.parser'解析器来解析从URL获取到的HTML内容  
soup = BeautifulSoup(response.text, 'html.parser') 

#找到HTML文档中的所有<a>标签(即所有链接)
soup.links = soup.find_all('a')

# 获取小说的章节链接
x=1
#链接
chapter_links=[]
#章节名称
catalogue=[]

for a in soup.links:
    if '.html' in str(a) and ("第"+str(x)+"章" in str(a) or "弟"+str(x)+"章" in str(a)):
        tp=str(a['href'])
        chapter_links.append(url[:-12]+tp)
        catalogue.append(a.text)
        x=x+1
 
i=0
for link in chapter_links:
    # 获取每一章的内容
    chapter_response = requests.get(link)
    chapter_response.encoding = 'utf-8'
    chapter_soup = BeautifulSoup(chapter_response.text, 'html.parser')
    # 找到 id 为 "myDiv" 的 div 标签  
    div = chapter_soup.find('div', {'id': 'content'}) 
    chapter_text = div.get_text()
    # 将章节内容写入文件
    with open('novel.txt', 'a', encoding='utf-8') as f:
        
        f.write(catalogue[i] + '\n')
        f.write(chapter_text + '\n')
        i=i+1
    print('第'+str(i)+'章下载完成')
    time.sleep(5)  # 延时5秒 
print('小说下载完成。')

好了,不多说了,我的小说下载好了,我看小说去了。 文章来源地址https://www.toymoban.com/news/detail-764773.html

到了这里,关于python:爬取网络小说,看这一篇就够了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于网络爬虫和SpringBoot框架的晋江文学小说小型网站项目

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,常可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。项目中,主要采取Scrapy框架实现一个爬虫,抓取晋江文学网站的热门小说数据。其主要步骤分为四步: 第一步:新建项目——scrap

    2024年02月02日
    浏览(45)
  • 【Linux】在ubuntu18.04系统中配置网络信息(超有用,完美解决,只看这一篇就行了)

    最近用centos搭建hadoop集群已经熟练了,但是学习场景中更多的使用的是ubuntu环境,就安装了ubuntu的环境进行搭建,结果ubuntu在很多地方与centos操作有较大区别,首先网络配置就让我折腾了半天,现在我将我已成功配置好的经验分享给大家 1.首先打开我们的VMware虚拟机,左上角

    2024年02月13日
    浏览(47)
  • 【Python系列】Python教程合辑-史上最全最详细-从入门到入土,看这一篇就够了

    目录 Python合辑汇总列表 用Python自动办公,做职场高手【完结】     玩转Python3入门到精通视频教程     数据分析资料包  全民一起玩Python     千锋教育Python700集零基础入门到精通(爬虫 办公自动化 数据分析)     慕课网实战课-畅销3年的Python分布式爬虫课程-原版提取  

    2024年02月22日
    浏览(95)
  • Python办公自动化之Word文档自动化:全网最全,看这一篇就够了

    目录 一、环境安装 1、升级pip 2、python-docx 3、win32com 4、mailmerge 5、matplotlib 二、Python-docx 新建文档 三、Python-docx 编辑已存在文档 四、win32com 将 doc 转为 docx 五、win32com 操作 word 1、打开新的word文档并添加内容 2、打开已存在word文档并添加内容 3、转换word为pdf 六、Python-docx 操作

    2024年02月01日
    浏览(61)
  • 基于Java(SpringBoot框架)毕业设计作品成品(10)网络网上web在线阅读小说电子书系统设计与实现

    博主介绍 :《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月07日
    浏览(55)
  • 精通线程池,看这一篇就够了

    当我们运用多线程技术处理任务时,需要不断通过new的方式创建线程,这样频繁创建和销毁线程,会造成cpu消耗过多。那么有没有什么办法 避免频繁创建线程 呢? 当然有,和我们以前学习过多连接池技术类似,线程池通过提前创建好线程保存在线程池中, 在任务要执行时取

    2023年04月17日
    浏览(95)
  • CSS基础——看这一篇就够了

    目录 一、CSS简介 1.CSS是什么? 2.CSS的作用 3.CSS的构成 二、CSS选择器 1.基础选择器 (1).标签选择器 (2)类选择器 (3)标签选择器 (4) 通配符选择器 2.复合选择器 (1)后代选择器(包含选择器) (2)子选择器 (3)并集选择器 (4)伪类选择器  三、基本属性 1.字体属性

    2024年02月09日
    浏览(70)
  • SourceTree使用看这一篇就够了

     你梦想有一天成为git大师,然而面对复杂的git命令,你感觉TMD这我能记得住吗?你曾经羡慕从命令行敲git命令,才会更加炫酷,然而时间一长,TMD命令我有忘了。那么今天我介绍的这款工具会让你从git命令中解救出来,这就是git可视化工具SourcTree。 事实上Git的功能十分强大

    2024年02月08日
    浏览(63)
  • Linux 命令大全(看这一篇就足够)

    目录 第一章:Linux目录结构 第一节:基本介绍 第二节:Linux具体目录结构 第二章:Linux常用命令 第一节:目录处理命令 2.1.1 命令格式 2.1.2 列出目录的内容:ls 命令 2.1.3 创建目录:mkdir 命令 2.1.4 切换工作目录:cd 命令 2.1.5 显示当前路径:pwd 命令  2.1.6 删除空目录:rmdir 命

    2024年02月03日
    浏览(46)
  • Docker Volume 看这一篇就够了

    默认情况下,在容器内创建的所有文件都存储在可写容器层上。这意味着: 当该容器不再存在时,数据不会持续存在,并且如果另一个进程需要数据,则可能很难将数据从容器中取出。 容器的可写层与运行容器的主机紧密耦合。您无法轻松地将数据移动到其他地方。 写入容

    2024年02月02日
    浏览(96)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包