爬取全书网小说

网站:http://www.quanshuwang.com/

目标:爬取小说内容

步骤:

  1. 打开一本小说源代码
  2. 获取各个章节的链接
  3. 打开各个章节的源代码
  4. 提取各个章节的内容
  5. 下载内容

小说链接如下:

http://www.quanshuwang.com/book/9/9055(每本小说链接都不同,这本是盗墓笔记的链接)

各个章节链接如下:

注意的是,在打印源码内容时要看看源码的编码格式,这个是'gbk'.

# coding=utf-8                                                                                        
import urllib.request                                                                                 
import re                                                                                             
import os                                                                                             
                                                                                                      
class Load_Novel(object):                                                                             
                                                                                                      
    def save_novel(self):                                                                             
        #第一步打开一本小说                                                                                    
        novel_url = 'http://www.quanshuwang.com/book/9/9055'                                          
        response = urllib.request.urlopen(novel_url).read()                                           
        response = response.decode('gbk')                                                             
        #print (response)                                                                             
        #第二步取出所有章节的链接,用正则表达式 通配符.*?                                                                   
        req = r'<li><a href="(.*?)" title="(.*?)">.*?</a></li>'                                       
        req = re.compile(req)                                                                         
        html = re.findall(req,response)                                                               
        #print (html)                                                                                 
        #第三步,获取章节源代码                                                                                  
        for item in html:                                                                             
            chapter_url = item[0]                                                                     
            #print (chapter_url)                                                                      
            chapter_title = item[1]                                                                   
            response = urllib.request.urlopen(chapter_url).read()                                     
            response = response.decode('gbk')                                                         
            #print (response)                                                                         
            #第四步,提取内容                                                                                 
            req = '</script>&nbsp;&nbsp;&nbsp;&nbsp;(.*?)<script type="text/javascript">'             
            req = re.compile(req,re.S)      #多行匹配                                                     
            novel_content = re.findall(req,response)                                                  
            #print (novel_content[0])#数据类型是列表                                                         
            novel_content = novel_content [0].replace('&nbsp;&nbsp;&nbsp;&nbsp;',' ')                 
            #print (novel_content)#从列表变成字符                                                            
            novel_content = novel_content.replace('<br />','')                                        
            #print (novel_content)                                                                    
            if not os.path.exists('novel'):                                                           
                os.mkdir('novel')                                                                     
            print ("正在保存%s"%chapter_title)                                                            
            with open('novel/{}.txt'.format(chapter_title),'w') as f:                                 
                f.write(novel_content)                                                                
                                                                                                      
#内置属性,别的文件引入这个文件时,无法执行下面代码                                                                            
if __name__ == "__main__":                                                                            
    load_novel = Load_Novel ()
    load_novel.save_novel()                                                                        

转载于:https://www.cnblogs.com/longwhite/p/10397737.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值