美文网首页胶水Pythonpython 入门程序员
Python爬取小说《心理罪城市之光》

Python爬取小说《心理罪城市之光》

作者: NiceBlueChai | 来源:发表于2017-11-13 13:07 被阅读78次
    爬取结果

    我们选择努努小说进行小说的爬取
    http://www.kanunu8.com/book4/10571/

    • 先写代码将目录爬下来,添加到一个列表中,比较简单,在此就不多说
    #爬取结果
    title=['序 往事',
     '第一章 和自己赛跑的人',
     '第二章 求婚',
     '第三章 报应',
     '第四章 足迹',
     '第五章 回忆的灰烬',
     '第六章 子宫',
     '第七章 雨夜寻踪',
     '第八章 噩梦',
     '第九章 对手',
     '第十章 思路',
     '第十一章 同态复仇',
     '第十二章 他的样子',
     '第十三章 地下室',
     '第十四章 似曾相识',
     '第十五章 城市之光',
     '第十六章 死期',
     '第十七章 公决',
     '第十八章 掌印',
     '第十九章 老宅',
     '第二十章 身份',
     '第二十一章 轮回',
     '第二十二章 杀手养成',
     '第二十三章 最爱',
     '第二十四章 忽略',
     '第二十五章 夺走',
     '第二十六章 熄灭',
     '第二十七章 死者的证言',
     '尾声 我想你要走了']
    
    • 打开几章小说,观察URL规律
      http://www.kanunu8.com/book4/10571/186030.html
      http://www.kanunu8.com/book4/10571/186031.html
    i=30
    while i<59:
      url='http://www.kanunu8.com/book4/10571/1860'+str(i)+'.html'
      i+=1
    
    • 用循环打开并爬取每个网页(每个章节)
      使用框架打开网页:
     try:
            r=requests.get(url,timeout=30)
            r.raise_for_status() #判断网页返回的状态码是否为200
            r.encoding=r.apparent_encoding
        except:
            return '产生异常'
    
    • 由于网页结构比较简单,使用Beautiful Soup解析网页内容
    soup=BeautifulSoup(r.text,'lxml')
    tag=soup.p.contents
    
    • 将解析的小说内容写入到文件
    path='g:/'+title[(i-30)]+'.txt'
     with open(path,'w') as f:
            #f.write('第 %s 章\r\n\r\n'%(i-31))
            for a in tag:
                if type(a) is bs4.element.NavigableString:
                    f.write(str(a.string[6:])+'\n')
                    print(a.string[6:])
            f.close()
    

    完整代码:

    # -*- coding: utf-8 -*-
    """
    Comments  parsing 
     
    @author: NiceBlueChai
    """ 
    import requests
    import bs4
    
    from bs4 import BeautifulSoup
    import time
    def getHTMLText(url):
        try:
            r=requests.get(url,timeout=30)
            r.raise_for_status()
            r.encoding=r.apparent_encoding
            return r.text
        except:
            return '产生异常'
    
    
    
    title=['序 往事',
     '第一章 和自己赛跑的人',
     '第二章 求婚',
     '第三章 报应',
     '第四章 足迹',
     '第五章 回忆的灰烬',
     '第六章 子宫',
     '第七章 雨夜寻踪',
     '第八章 噩梦',
     '第九章 对手',
     '第十章 思路',
     '第十一章 同态复仇',
     '第十二章 他的样子',
     '第十三章 地下室',
     '第十四章 似曾相识',
     '第十五章 城市之光',
     '第十六章 死期',
     '第十七章 公决',
     '第十八章 掌印',
     '第十九章 老宅',
     '第二十章 身份',
     '第二十一章 轮回',
     '第二十二章 杀手养成',
     '第二十三章 最爱',
     '第二十四章 忽略',
     '第二十五章 夺走',
     '第二十六章 熄灭',
     '第二十七章 死者的证言',
     '尾声 我想你要走了']
    
    
    
    for i in range(30,58):
        
        path='g:/'+title[(i-30)]+'.txt'
        url='http://www.kanunu8.com/book4/10571/1860'+str(i)+'.html'
        try:
            r=requests.get(url,timeout=30)
            r.raise_for_status()
            r.encoding='GBK'
        except:
            print('异常!!!')
        soup=BeautifulSoup(r.text,'lxml')
        tag=soup.p.contents
        with open(path,'w') as f:
            #f.write('第 %s 章\r\n\r\n'%(i-31))
            for a in tag:
                if type(a) is bs4.element.NavigableString:
                    f.write(str(a.string[6:])+'\n')
                    print(a.string[6:])
            f.close()
        
        time.sleep(1)
    

    ❤️我的目标是:someday,即便你花钱看我的文章,也会觉得心满意足


    相关文章

      网友评论

        本文标题:Python爬取小说《心理罪城市之光》

        本文链接:https://www.haomeiwen.com/subject/jzfzmxtx.html