python3網(wǎng)絡(luò)爬蟲业踏,下載起點(diǎn)小說

一、各章小說鏈接爬取

1涧卵、章節(jié)URL:https://book.qidian.com/info/1012053141#Catalog

2勤家、經(jīng)過審查元素各章節(jié)名稱和鏈接如下圖

屏幕快照 2018-07-07 上午9.24.52.png

3、可以通過如下方法獲取章節(jié)名和各章節(jié)鏈接

    def get_download_chapter_url (self):
        # 用于爬取https
        context = ssl._create_unverified_context()
        response = urllib.request.urlopen(self.server, context = context)
        text = str(response.read(), encoding = 'utf-8')
        bf = BeautifulSoup(text, 'html.parser')
        div = bf.find_all('div', class_ = 'volume')
        for i in range(len(div)):
            li = div[i].find_all('li')
            for j in range(len(li)):
                a = li[j].find_all('a')
                html = BeautifulSoup(str(a), 'lxml')
                # 章節(jié)url
                self.chapterUrls.append('https:' + str(html.a.get('href')))
                # 章節(jié)名
                self.chapterNames.append(html.a.string)
        print(self.chapterUrls)
        print(self.chapterNames)

4柳恐、運(yùn)行一下效果如下

屏幕快照 2018-07-07 上午9.30.27.png

二伐脖、爬取所有章節(jié)內(nèi)容,并保存到文件中

1乐设、爬取章節(jié)內(nèi)容

屏幕快照 2018-07-07 上午9.33.11.png

可以看出讼庇,小說章節(jié)內(nèi)容全在某個div下,可通過下面方法爬取

    def get_contents (self, target):
        context = ssl._create_unverified_context()
        response = urllib.request.urlopen(target, context = context)
        text = str(response.read(), encoding = 'utf-8')
        bf = BeautifulSoup(text, 'html.parser')
        txts = bf.find_all('div', class_='read-content j_readContent')
        txts = txts[0].text.replace('\xa0'*8, '\n\n')
        return txts

2近尚、將文章輸出txt

def write (self, name, path, txt):
        write_flag = True
        with open(path, 'a', encoding = 'utf-8') as f:
            f.write(name + '\n')
            f.writelines(txt)
            f.write('\n\n')

三蠕啄、完整代碼和效果

1、完整代碼

#戈锻!/usr/bin/env Python3
# -*- coding:UTF-8 -*-

import urllib.request
import string, ssl, sys
from bs4 import BeautifulSoup

class DownloadNovel():
    def __init__ (self, server):
        self.server = server
        # 存放章節(jié)名
        self.chapterNames = []
        # 存放章節(jié)鏈接
        self.chapterUrls = []
        # 存放章節(jié)數(shù)
        self.nums = 0
    def get_download_chapter_url (self):
        # 用于爬取https
        context = ssl._create_unverified_context()
        response = urllib.request.urlopen(self.server, context = context)
        text = str(response.read(), encoding = 'utf-8')
        bf = BeautifulSoup(text, 'html.parser')
        div = bf.find_all('div', class_ = 'volume')
        for i in range(len(div)):
            li = div[i].find_all('li')
            for j in range(len(li)):
                a = li[j].find_all('a')
                html = BeautifulSoup(str(a), 'lxml')
                # 章節(jié)url
                self.chapterUrls.append('https:' + str(html.a.get('href')))
                # 章節(jié)名
                self.chapterNames.append(html.a.string)
    def get_contents (self, target):
        context = ssl._create_unverified_context()
        response = urllib.request.urlopen(target, context = context)
        text = str(response.read(), encoding = 'utf-8')
        bf = BeautifulSoup(text, 'html.parser')
        txts = bf.find_all('div', class_='read-content j_readContent')
        txts = txts[0].text.replace('\xa0'*8, '\n\n')
        return txts
    def write (self, name, path, txt):
        write_flag = True
        with open(path, 'a', encoding = 'utf-8') as f:
            f.write(name + '\n')
            f.writelines(txt)
            f.write('\n\n')

if __name__ == '__main__':
    dl = DownloadNovel('https://book.qidian.com/info/1012053141#Catalog')
    dl.get_download_chapter_url()
    print('開始下載')
    for i in range(len(dl.chapterNames)):
        dl.write(dl.chapterNames[i], '無限火力大暴走.txt', dl.get_contents(dl.chapterUrls[i]))
        sys.stdout.write("  已下載:%.3f%%" %  float(i/len(dl.chapterNames)) + '\r')
        sys.stdout.flush()
    print('下載完成')

2歼跟、效果

屏幕快照 2018-07-07 上午9.38.46.png
屏幕快照 2018-07-07 上午9.47.04.png

源碼鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市格遭,隨后出現(xiàn)的幾起案子哈街,更是在濱河造成了極大的恐慌,老刑警劉巖拒迅,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拴驮,死亡現(xiàn)場離奇詭異,居然都是意外死亡驱负,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門帝牡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒙揣,你說我怎么就攤上這事靶溜。” “怎么了懒震?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵罩息,是天一觀的道長。 經(jīng)常有香客問我个扰,道長瓷炮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任递宅,我火速辦了婚禮娘香,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘办龄。我一直安慰自己烘绽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布俐填。 她就那樣靜靜地躺著安接,像睡著了一般。 火紅的嫁衣襯著肌膚如雪英融。 梳的紋絲不亂的頭發(fā)上盏檐,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機(jī)與錄音驶悟,去河邊找鬼胡野。 笑死,一個胖子當(dāng)著我的面吹牛痕鳍,可吹牛的內(nèi)容都是我干的硫豆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼额获,長吁一口氣:“原來是場噩夢啊……” “哼够庙!你這毒婦竟也來了恭应?” 一聲冷哼從身側(cè)響起抄邀,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎昼榛,沒想到半個月后境肾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剔难,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年奥喻,在試婚紗的時候發(fā)現(xiàn)自己被綠了偶宫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡环鲤,死狀恐怖纯趋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情冷离,我是刑警寧澤吵冒,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站西剥,受9級特大地震影響痹栖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瞭空,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一揪阿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咆畏,春花似錦南捂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钦讳,卻和暖如春矿瘦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背愿卒。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工缚去, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人琼开。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓易结,卻偏偏與公主長得像,于是被迫代替她去往敵國和親柜候。 傳聞我的和親對象是個殘疾皇子搞动,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353