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

爬取结果

我们选择努努小说进行小说的爬取
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,即便你花钱看我的文章,也会觉得心满意足


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 声明:本文讲解的实战内容,均仅用于学习交流,请勿用于任何商业用途! 一、前言 强烈建议:请在电脑的陪同下,阅读本文...
    Bruce_Szh阅读 12,814评论 6 28
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,616评论 6 427
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,860评论 25 709
  • 夜来雨淅沥,驻足恐湿衣,幸有卖伞人,十元换遮蔽。 一抹杏花黄,千滴雨附妆,游子急步归,听雨耳边唱。 一曲沁人心,两...
    忘忧卉儿阅读 155评论 0 0
  • 别拿回忆装喜欢,欺骗自己可会误终生哦! 01 逛街的时候看上了一条很喜欢的紧身连衣裙,却因为有点小肚腩,穿不下。 ...
    吃一屋阅读 1,439评论 0 0