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,767評論 6 28
  • # Python 資源大全中文版 我想很多程序員應該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,553評論 6 427
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,029評論 25 708
  • 夜來雨淅瀝,駐足恐濕衣,幸有賣傘人,十元換遮蔽。 一抹杏花黃,千滴雨附妝,游子急步歸,聽雨耳邊唱。 一曲沁人心,兩...
    忘憂卉兒閱讀 153評論 0 0
  • 別拿回憶裝喜歡,欺騙自己可會誤終生哦! 01 逛街的時候看上了一條很喜歡的緊身連衣裙,卻因為有點小肚腩,穿不下。 ...
    吃一屋閱讀 1,425評論 0 0