爬取小说并以章节名保存

穿精又带淫゛_ 提交于 2019-12-06 06:54:25

今天我们爬取网页中的文字,与上次的爬取网页中的图片相似,网页的中的文字也是在网页的源码中(一般情况下)。

所以我们就以在某小说网站上爬取小说《圣墟》为例,使用爬虫爬取网页中的文本内容,并根据小说的章节名保存。

我们的思路如下:

  1.爬取当前网页的源码:

  2.提取出需要的数据(标题,正文)

  3.保存(标题为文件名)

我们首先找到要爬取的网页:https://www.nbiquge.com/0_89/15314.html,可以看到小说的标题和正文,这是本次爬取的目标。

 

首先分析网页的编码格式,可以看到该网站的编码格式是”gbk“。

然后找到我们要爬取的信息在网页中的位置:

标题,在网页中右键点击标题,点击”检查“,就可以看到标题在网页中所处的位置。

 

 正文:

 

 

在了解网站的编码和标题正文的位置后,我们就可以编写代码来进行爬取了!

首先获得网页源码,再对源码进行分析,提取所要获得的数据,最后保存为.txt文件。代码如下:

import requests
from bs4 import BeautifulSoup

#网页url
url="https://www.nbiquge.com/0_89/15314.html"
#获得网页源码
def getHtml(url):
    r=requests.get(url)
    r.encoding='gbk'
    return r.text
#获得标题和正文内容
def getTxt(html):
    s=BeautifulSoup(html)
    title=s.find('div',{'class':'bookname'}).find('h1')
    text=s.find('div',{'id':'content'})
    ls=[]
    ls.append(title.string)
    ls.append(str(text))
    return ls
#保存
def saveTxt(ls):
    name=ls[0]+'.txt'
    fo=open(name,'w+',encoding='utf8')
    # ls[1] = ls[1].replace("    ", "")
    ls[1] = ls[1].replace("<br/>", "")
    fo.writelines(ls[1])
    fo.close()

h1=getHtml(url)
h2=getTxt(h1)
saveTxt(h2)

在Pycharm中运行代码,该项目的文件夹中就会出现一个txt文件。

 

 打开该txt文件,里面保存了小说的内容,其中标题为小说的章节名。

 

 

  以上就是一个简单的爬取小说的代码了。这里还有其他的功能没有展现出,比如爬取小说的更多章节并保存,如果是在起点中文网上该怎么操作(起点的网页源码没有文章内容),这就需要我们进一步进行探索了。网页的爬取是需要我们根据网页的结构进行分析,然后编写相应的代码进行爬取的,在这个过程中会遇到很多的预料不到的情况,需要我们根据所学内容以及自己的查阅来解决问题。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!