亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁(yè) > 知識(shí)庫(kù) > python 爬取國(guó)內(nèi)小說(shuō)網(wǎng)站

python 爬取國(guó)內(nèi)小說(shuō)網(wǎng)站

熱門標(biāo)簽:地圖標(biāo)注自己和別人標(biāo)注區(qū)別 孝感營(yíng)銷電話機(jī)器人效果怎么樣 ai電銷機(jī)器人的優(yōu)勢(shì) 商家地圖標(biāo)注海報(bào) 海外網(wǎng)吧地圖標(biāo)注注冊(cè) 騰訊地圖標(biāo)注沒(méi)法顯示 打電話機(jī)器人營(yíng)銷 南陽(yáng)打電話機(jī)器人 聊城語(yǔ)音外呼系統(tǒng)

原理先行

作為一個(gè)資深的小說(shuō)愛(ài)好者,國(guó)內(nèi)很多小說(shuō)網(wǎng)站如出一轍,什么 🖊*閣啊等等,大都是 get 請(qǐng)求返回 html 內(nèi)容,而且會(huì)有標(biāo)志性的dl>dd>等標(biāo)簽。
所以大概的原理,就是先 get 請(qǐng)求這個(gè)網(wǎng)站,然后對(duì)獲取的內(nèi)容進(jìn)行清洗,寫進(jìn)文本里面,變成一個(gè) txt,導(dǎo)入手機(jī),方便看小說(shuō)。

實(shí)踐篇

之前踩過(guò)一個(gè)坑,一開(kāi)始我看了幾頁(yè)小說(shuō),大概小說(shuō)的內(nèi)容網(wǎng)站是https://www.xxx.com/小說(shuō)編號(hào)/章節(jié)編號(hào).html,一開(kāi)始看前幾章,我發(fā)現(xiàn)章節(jié)編號(hào)是連續(xù)的, 于是我一開(kāi)始想的就是記住起始章節(jié)編號(hào),然后在循環(huán)的時(shí)候章節(jié)編號(hào)自增就行,后面發(fā)現(xiàn)草率了,可能看個(gè) 100 章之后,章節(jié)列表會(huì)出現(xiàn)斷層現(xiàn)象,這個(gè)具體為啥 還真不知道,按理說(shuō)小說(shuō)編號(hào)固定,可以算是一個(gè)數(shù)據(jù)表,那里面的章節(jié)編號(hào)不就是一個(gè)自增 id 就完了嘛?有懂王可以科普一下!
所以這里要先獲取小說(shuō)的目錄列表,并把目錄列表洗成一個(gè)數(shù)組方便我們后期查找!getList.py文件:

定義一個(gè)請(qǐng)求書簽的方法

# 請(qǐng)求書簽地址
def req():
    url = "https://www.24kwx.com/book/4/4020/"
    strHtml = requests.get(url)
    return strHtml.text

將獲取到的內(nèi)容提取出(id:唯一值/或第 X 章小說(shuō))(name:小說(shuō)的章節(jié)名稱)(key:小說(shuō)的章節(jié) id)

# 定義一個(gè)章節(jié)對(duì)象
class Xs(object):
    def __init__(self,id,key,name):
        self._id = id
        self._key = key
        self._name = name

    @property
    def id(self):
        self._id
    @property
    def key(self):
        self._key
    @property
    def name(self):
        self._name

    def getString(self):
        return 'id:%s,name:%s,key:%s' %(self._id,self._name,self._key)

# 轉(zhuǎn)換成書列表
def tranceList():
    key = 0
    name = ""
    xsList = []
    idrule = r'/4020/(.+?).html'
    keyrule = r'第(.+?)章'
    html = req()
    html = re.split("/dt>",html)[2]
    html = re.split("/dl>",html)[0]
    htmlList = re.split("/dd>",html)
    for i in htmlList:
        i = i.strip()
        if(i):
            # 獲取id
            id = re.findall(idrule,i)[0]
            lsKeyList = re.findall(keyrule,i)
            # 如果有章節(jié)
            if len(lsKeyList) > 0 :
                key = int(lsKeyList[0])
                lsname = re.findall(r'章(.+?)/a>',i)
            else :
                key = key + 1
            # 獲取名字
            # lsname = re.findall(r'.html">(.+?)/a>',i)[0]
            # name = re.sub(',',' ', lsname, flags=re.IGNORECASE)
            name = re.findall(r'.html">(.+?)/a>',i)[0]
            xsobj = Xs(id,key,name)
            xsList.append(xsobj.getString())
    writeList(xsList)

注意一下我:如果你從別的語(yǔ)言轉(zhuǎn) py,第一次寫object對(duì)象可能會(huì)比較懵,沒(méi)錯(cuò)因?yàn)樗膐bject是一個(gè)class,這里我創(chuàng)建的對(duì)象就是{id,key,name}但是你寫入 txt 的時(shí)候還是要getString,所以后面想想我直接寫個(gè){id:xxx,name:xxx,key:xxx}的字符串不就完了,還弄啥class,后面還是想想給兄弟盟留點(diǎn)看點(diǎn),就留著了

最后寫入 txt 文件

# 寫入到文本
def writeList(list):
    f = open("xsList.txt",'w',encoding='utf-8')
    # 這里不能寫list,要先轉(zhuǎn)字符串 TypeError: write() argument must be str, not list
    f.write('\n'.join(list))
    print('寫入成功')

# 大概寫完的txt是這樣的
id:3798160,name:第1章 孫子,我是你爺爺,key:1
id:3798161,name:第2章 孫子,等等我!,key:2
id:3798162,name:第3章 天上掉下個(gè)親爺爺,key:3
id:3798163,name:第4章 超級(jí)大客戶,key:4
id:3798164,name:第5章 一張退婚證明,key:5

ok ! Last one
這里已經(jīng)寫好了小說(shuō)的目錄,那我們就要讀取小說(shuō)的內(nèi)容,同理

先寫個(gè)請(qǐng)求

# 請(qǐng)求內(nèi)容地址
def req(id):
    url = "https://www.24kwx.com/book/4/4020/"+id+".html"
    strHtml = requests.get(url)
    return strHtml.text

讀取我們剛剛保存的目錄

def getList():
    f = open("xsList.txt",'r', encoding='utf-8')
    # 這里按行讀取,讀取完后line是個(gè)數(shù)組
    line = f.readlines()
    f.close()
    return line

定義好一個(gè)清洗數(shù)據(jù)的規(guī)則

contextRule = r'div class="content">(.+?)script>downByJs();/script>'
titleRule = r'h1>(.+?)/h1>'
def getcontext(objstr):
    xsobj = re.split(",",objstr)
    id = re.split("id:",xsobj[0])[1]
    name = re.split("name:",xsobj[1])[1]
    html = req(id)
    lstitle = re.findall(titleRule,html)
    title = lstitle[0] if len(lstitle) > 0 else name
    context = re.split('div id="content" class="showtxt">',html)[1]
    context = re.split('/div>',context)[0]
    context = re.sub('nbsp;|\r|\n','',context)
    textList = re.split('br />',context)
    textList.insert(0,title)
    for item in textList :
        writeTxt(item)
    print('%s--寫入成功'%(title))

再寫入文件

def writeTxt(txt):
    if txt :
        f = open("nr.txt",'a',encoding="utf-8")
        f.write(txt+'\n')

最后當(dāng)然是串聯(lián)起來(lái)啦

def getTxt():
    # 默認(rèn)參數(shù)配置
    startNum = 1261 # 起始章節(jié)
    endNum = 1300 # 結(jié)束章節(jié)
    # 開(kāi)始主程序
    f = open("nr.txt",'w',encoding='utf-8')
    f.write("")
    if endNum  startNum:
        print('結(jié)束條數(shù)必須大于開(kāi)始條數(shù)')
        return
    allList = getList()
    needList = allList[startNum-1:endNum]
    for item in needList:
        getcontext(item)
        time.sleep(0.2)
    print("全部爬取完成")

完整代碼

getList.py

import requests
import re

# 請(qǐng)求書簽地址
def req():
    url = "https://www.24kwx.com/book/4/4020/"
    strHtml = requests.get(url)
    return strHtml.text

# 定義一個(gè)章節(jié)對(duì)象
class Xs(object):
    def __init__(self,id,key,name):
        self._id = id
        self._key = key
        self._name = name

    @property
    def id(self):
        self._id
    @property
    def key(self):
        self._key
    @property
    def name(self):
        self._name

    def getString(self):
        return 'id:%s,name:%s,key:%s' %(self._id,self._name,self._key)

# 轉(zhuǎn)換成書列表
def tranceList():
    key = 0
    name = ""
    xsList = []
    idrule = r'/4020/(.+?).html'
    keyrule = r'第(.+?)章'
    html = req()
    html = re.split("/dt>",html)[2]
    html = re.split("/dl>",html)[0]
    htmlList = re.split("/dd>",html)
    for i in htmlList:
        i = i.strip()
        if(i):
            # 獲取id
            id = re.findall(idrule,i)[0]
            lsKeyList = re.findall(keyrule,i)
            # 如果有章節(jié)
            if len(lsKeyList) > 0 :
                key = int(lsKeyList[0])
                lsname = re.findall(r'章(.+?)/a>',i)
            else :
                key = key + 1
            # 獲取名字
            # lsname = re.findall(r'.html">(.+?)/a>',i)[0]
            # name = re.sub(',',' ', lsname, flags=re.IGNORECASE)
            name = re.findall(r'.html">(.+?)/a>',i)[0]
            xsobj = Xs(id,key,name)
            xsList.append(xsobj.getString())
    writeList(xsList)

# 寫入到文本
def writeList(list):
    f = open("xsList.txt",'w',encoding='utf-8')
    # 這里不能寫list,要先轉(zhuǎn)字符串 TypeError: write() argument must be str, not list
    f.write('\n'.join(list))
    print('寫入成功')


def main():
    tranceList()

if __name__ == '__main__':
    main() 

writeTxt.py

import requests
import re
import time


# 請(qǐng)求內(nèi)容地址
def req(id):
    url = "https://www.24kwx.com/book/4/4020/"+id+".html"
    strHtml = requests.get(url)
    return strHtml.text

def getList():
    f = open("xsList.txt",'r', encoding='utf-8')
    # 這里按行讀取
    line = f.readlines()
    f.close()
    return line

contextRule = r'div class="content">(.+?)script>downByJs();/script>'
titleRule = r'h1>(.+?)/h1>'
def getcontext(objstr):
    xsobj = re.split(",",objstr)
    id = re.split("id:",xsobj[0])[1]
    name = re.split("name:",xsobj[1])[1]
    html = req(id)
    lstitle = re.findall(titleRule,html)
    title = lstitle[0] if len(lstitle) > 0 else name
    context = re.split('div id="content" class="showtxt">',html)[1]
    context = re.split('/div>',context)[0]
    context = re.sub('nbsp;|\r|\n','',context)
    textList = re.split('br />',context)
    textList.insert(0,title)
    for item in textList :
        writeTxt(item)
    print('%s--寫入成功'%(title))

def writeTxt(txt):
    if txt :
        f = open("nr.txt",'a',encoding="utf-8")
        f.write(txt+'\n')

def getTxt():
    # 默認(rèn)參數(shù)配置
    startNum = 1261 # 起始章節(jié)
    endNum = 1300 # 結(jié)束章節(jié)
    # 開(kāi)始主程序
    f = open("nr.txt",'w',encoding='utf-8')
    f.write("")
    if endNum  startNum:
        print('結(jié)束條數(shù)必須大于開(kāi)始條數(shù)')
        return
    allList = getList()
    needList = allList[startNum-1:endNum]
    for item in needList:
        getcontext(item)
        time.sleep(0.2)
    print("全部爬取完成")

    
def main():
    getTxt()

if __name__ == "__main__":
    main()

以上就是python 爬取國(guó)內(nèi)小說(shuō)網(wǎng)站的詳細(xì)內(nèi)容,更多關(guān)于python 爬取小說(shuō)網(wǎng)站的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python爬蟲(chóng)入門教程02之筆趣閣小說(shuō)爬取
  • python 爬取小說(shuō)并下載的示例
  • python爬取”頂點(diǎn)小說(shuō)網(wǎng)“《純陽(yáng)劍尊》的示例代碼
  • Python爬取365好書中小說(shuō)代碼實(shí)例
  • Python實(shí)現(xiàn)的爬取小說(shuō)爬蟲(chóng)功能示例
  • Python scrapy爬取起點(diǎn)中文網(wǎng)小說(shuō)榜單
  • python爬蟲(chóng)之爬取筆趣閣小說(shuō)升級(jí)版

標(biāo)簽:楊凌 揚(yáng)州 迪慶 牡丹江 南寧 聊城 撫州 六盤水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python 爬取國(guó)內(nèi)小說(shuō)網(wǎng)站》,本文關(guān)鍵詞  python,爬取,國(guó)內(nèi),小說(shuō),網(wǎng)站,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python 爬取國(guó)內(nèi)小說(shuō)網(wǎng)站》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于python 爬取國(guó)內(nèi)小說(shuō)網(wǎng)站的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    天天做人人爱夜夜爽2020 | 二级特黄绝大片免费视频大片| 天天做人人爱夜夜爽2020 | 日本免费看视频| 亚洲女初尝黑人巨高清在线观看| 99久久精品国产国产毛片| 国产a视频精品免费观看| 欧美激情伊人| 亚洲www美色| 日韩一级黄色| 青青青草影院 | 黄视频网站免费| 精品视频在线看| 国产成人啪精品| 国产成人精品综合久久久| 国产成人精品综合| 欧美另类videosbestsex高清| 色综合久久天天综线观看| 久久国产精品自线拍免费| 高清一级做a爱过程不卡视频| 二级特黄绝大片免费视频大片| 精品视频免费看| 欧美激情一区二区三区中文字幕| 九九久久99| 午夜在线观看视频免费 成人| 亚欧视频在线| 久久国产一区二区| 黄色免费三级| 天天做人人爱夜夜爽2020 | 美女被草网站| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产高清在线精品一区a| 欧美另类videosbestsex久久| 久久99中文字幕| 久久国产精品只做精品| 黄视频网站在线看| 久久久久久久免费视频| 99色播| 可以在线看黄的网站| 精品国产香蕉在线播出| 一 级 黄 中国色 片| 一级片片| 国产视频一区二区在线播放| 精品国产亚洲一区二区三区| 国产成a人片在线观看视频| 亚洲天堂免费观看| 精品视频在线看| 国产成人欧美一区二区三区的| 免费国产在线视频| 久久国产一区二区| 中文字幕一区二区三区精彩视频 | 日本免费乱人伦在线观看| 国产伦久视频免费观看视频| 精品久久久久久中文字幕一区| 免费一级片在线| 久久久成人网| 黄色免费网站在线| 久久福利影视| 91麻豆精品国产自产在线| 精品国产一区二区三区免费| 欧美一级视频免费观看| a级毛片免费全部播放| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日日夜人人澡人人澡人人看免| 九九免费精品视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产伦理精品| 精品毛片视频| 成人免费观看视频| 国产a视频精品免费观看| 国产精品自拍一区| 国产不卡在线播放| 九九久久99| 香蕉视频久久| 美女免费精品高清毛片在线视 | 麻豆系列国产剧在线观看| 亚洲精品中文一区不卡| 精品国产一区二区三区久| 日本在线不卡免费视频一区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品视频一区二区| 久久99欧美| 国产视频一区二区在线播放| 韩国三级视频网站| 亚欧乱色一区二区三区| 一 级 黄 中国色 片| 欧美国产日韩一区二区三区| 91麻豆高清国产在线播放| 国产视频一区在线| 日本在线播放一区| 久草免费在线色站| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | a级毛片免费观看网站| 成人影院久久久久久影院| 精品国产三级a∨在线观看| 欧美激情一区二区三区在线| 日本乱中文字幕系列 | 久久久久久久久综合影视网| 可以免费看毛片的网站| 九九精品在线| 国产综合91天堂亚洲国产| 香蕉视频三级| 日本免费乱理伦片在线观看2018| 国产一区精品| 日本特黄特黄aaaaa大片| 91麻豆精品国产自产在线观看一区| 国产成a人片在线观看视频| 精品久久久久久综合网| 欧美一级视频免费观看| 欧美激情一区二区三区视频高清| 国产a视频精品免费观看| 亚洲天堂在线播放| 欧美a免费| 国产成人精品综合久久久| 二级特黄绝大片免费视频大片| 久久精品免视看国产明星| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 青青青草影院| 欧美大片a一级毛片视频| 精品久久久久久影院免费| 九九精品久久| 欧美大片aaaa一级毛片| 欧美另类videosbestsex| 欧美激情一区二区三区在线| 韩国三级一区| 四虎影视久久| 精品久久久久久中文字幕一区| 国产一区国产二区国产三区| 黄视频网站在线看| 黄视频网站在线免费观看| 沈樵在线观看福利| 亚洲www美色| 日韩一级精品视频在线观看| 日韩在线观看网站| 黄色短视频网站| 成人a大片高清在线观看| 99久久精品费精品国产一区二区| 成人a大片在线观看| 国产伦久视频免费观看 视频| 成人免费观看视频| 日本在线www| 欧美爱色| 色综合久久手机在线| 久久精品免视看国产明星| 中文字幕一区二区三区精彩视频 | 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产精品1024永久免费视频| 欧美国产日韩一区二区三区| 日韩免费片| 国产激情一区二区三区| 欧美a免费| 国产不卡在线播放| 国产伦精品一区二区三区无广告 | 亚洲第一页色| 久久精品道一区二区三区| 成人av在线播放| 欧美爱爱网| 香蕉视频一级| 日韩免费在线视频| 久久国产一久久高清| 日韩av成人| 国产高清在线精品一区a| 青青青草影院| 久久久久久久网| 欧美爱爱网| 精品视频免费看| 免费一级片在线| 亚洲 欧美 91| 毛片高清| 久久精品店| 国产美女在线一区二区三区| 91麻豆精品国产综合久久久| 午夜在线亚洲| 欧美1卡一卡二卡三新区| 国产91素人搭讪系列天堂| 欧美爱爱网| 成人高清护士在线播放| 九九精品在线| 欧美大片毛片aaa免费看| 天天做日日爱夜夜爽| 欧美一区二区三区在线观看| 天天色色色| 日日日夜夜操| 黄色福利| 韩国三级视频在线观看| 色综合久久久久综合体桃花网| 国产综合91天堂亚洲国产| 黄视频网站免费观看| 久久久成人影院| 日韩专区在线播放| 超级乱淫伦动漫| 91麻豆高清国产在线播放| 亚欧视频在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩中文字幕在线播放| 99久久精品费精品国产一区二区| a级精品九九九大片免费看| 成人影视在线观看| 久久精品成人一区二区三区|