爬取結果
我們選擇努努小說進行小說的爬取
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,即便你花錢看我的文章,也會覺得心滿意足