不懂python使爬取小说观看的方法?其实想解决这个问题也不难,下面让小编带着大家一起学习怎么去解决,希望大家阅读完这篇文章后大所收获。

python使爬取的小说更利于观看的方法:

1、使用追加模式将文章写入txt文本

关于文件的写入, ‘w’ 的方式 是覆盖写, 没有就创建, 那么我们写小说就不需要用这个, 使用
‘a’ 追加写的模式, 然后添加适当的分隔符, 只有文本中添加目录, 整个txt在手机中才会显示出目录的存在 ,我的实例如下: 最好加点文字提示, 代表这章节下载成功到总txt中 !

path='D://爬取小说//'os.chdir(path)#进入这个文件夹withopen('酒神.txt','a+',encoding='utf-8')asfw:fw.write(''.join(items['title'])+'\n\n\n'+'-'*40)fw.write(''.join(items['text']))print(f'{items["title"]}下载完成!')

2、使用xpath读取网页的文章内容

爬取小说这样的文字量很多的情况下, 文字的处理显得极为重要了,爬取小说不推荐使用正则re,也不推荐使用soup, 原因你获取不了网页自带的换行符和缩进符, 比如 \xboo 之类的, 如果你获取不了文本自带的这些,那么你就得自己添加,可以使用re的sub进行适当的替换换行,这就很麻烦,这里一定推荐使用xpath的text() 去匹配, 方便快捷,爬小说的小助手!

text=html.xpath('//div[@id="content"]/text()')

3、添加sleep函数,降低爬取速度

为什么会出现这样的情况,高频发的请求网址,如果不是使用框架, 那么就需要设置延迟时间了。比如sleep() 或者 request 加入参数 timeout ,不然很容易被网址通过请求次数 进而识别出来 这是一个爬虫程序, 也就是非人类操作, 那么他就可以不让你请求,从而你就爬虫失败!

r=requests.get(url,headers=self.headers)time.sleep(0.7)

完整代码如下:

#-*-coding:utf-8-*-#@Time:2020/6/216:13#@author:沙漏在下雨#@Software:PyCharm#@CSDN:https://me.csdn.net/qq_45906219importrequestsfromlxmlimportetreeimportosimporttimeclassSpider:def__init__(self):self.start_url='http://www.biquge.info/11_11079/'self.headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)''AppleWebKit/537.36(KHTML,likeGecko)''Chrome/81.0.4044.129Safari/537.36','Host':'www.biquge.info','Referer':'http://www.biquge.info/11_11079/5216668.html','Cookie':'clickbids=11079;Hm_lvt_6dfe3c8f195b43b8e667a2a2e5936122=1591085546;''Hm_lvt_c979821d0eeb958aa7201d31a6991f34=1591085539,1591085553,1591085815;''Hm_lpvt_6dfe3c8f195b43b8e667a2a2e5936122=1591087376;''Hm_lpvt_c979821d0eeb958aa7201d31a6991f34=1591087377'}defget_page(self):"""获得每一章节的网址yield回去"""r=requests.get(self.start_url,headers=self.headers)ifr.status_code==200:r.encoding=r.apparent_encodinghtml=etree.HTML(r.text)page_url=html.xpath('//div[@id="list"]/dl/dd/a/@href')forurlinpage_url[222:]:url=f'http://www.biquge.info/11_11079/{url}'yieldurldefsave_text(self,items):"""根据章节下载'"""path='D://爬取小说//'os.chdir(path)#进入这个文件夹withopen('酒神.txt','a+',encoding='utf-8')asfw:fw.write(''.join(items['title'])+'\n\n\n'+'-'*40)fw.write(''.join(items['text']))print(f'{items["title"]}下载完成!')defparse_page_error(self,r):#为处理异常:r.encoding=r.apparent_encodinghtml=etree.HTML(r.text)title=html.xpath('//div[@class="bookname"]/h2/text()')text=html.xpath('//div[@id="content"]/text()')items={}items['title']=titleitems['text']=textself.save_text(items)defparse_page(self):"""分析每一章节然后下载,次数过快容易炸ip三次保底请求!"""forurlinself.get_page():r=requests.get(url,headers=self.headers)time.sleep(0.7)ifr.status_code==200:self.parse_page_error(r)else:print(f'该{url}未下载成功!再次请求')rr=requests.get(url,headers=self.headers)ifrr.status_code==200:self.parse_page_error(rr)else:print("第三次请求!")rrr=requests.get(url,headers=self.headers)self.parse_page_error(rrr)print('全部下载完成!')jiushen=Spider()jiushen.parse_page()

感谢你能够认真阅读完这篇文章,希望小编分享python使爬取小说观看的方法内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!