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