日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python 爬取國內小說網站

瀏覽:39日期:2022-06-17 11:08:47
目錄原理先行實踐篇完整代碼原理先行

作為一個資深的小說愛好者,國內很多小說網站如出一轍,什么 🖊*閣啊等等,大都是 get 請求返回 html 內容,而且會有標志性的<dl><dd>等標簽。所以大概的原理,就是先 get 請求這個網站,然后對獲取的內容進行清洗,寫進文本里面,變成一個 txt,導入手機,方便看小說。

實踐篇

之前踩過一個坑,一開始我看了幾頁小說,大概小說的內容網站是https://www.xxx.com/小說編號/章節編號.html,一開始看前幾章,我發現章節編號是連續的, 于是我一開始想的就是記住起始章節編號,然后在循環的時候章節編號自增就行,后面發現草率了,可能看個 100 章之后,章節列表會出現斷層現象,這個具體為啥 還真不知道,按理說小說編號固定,可以算是一個數據表,那里面的章節編號不就是一個自增 id 就完了嘛?有懂王可以科普一下!所以這里要先獲取小說的目錄列表,并把目錄列表洗成一個數組方便我們后期查找!getList.py文件:

定義一個請求書簽的方法

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

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

# 定義一個章節對象class Xs(object): def __init__(self,id,key,name):self._id = idself._key = keyself._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)# 轉換成書列表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) # 如果有章節 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)

注意一下我:如果你從別的語言轉 py,第一次寫object對象可能會比較懵,沒錯因為他的object是一個class,這里我創建的對象就是{id,key,name}但是你寫入 txt 的時候還是要getString,所以后面想想我直接寫個{id:xxx,name:xxx,key:xxx}的字符串不就完了,還弄啥class,后面還是想想給兄弟盟留點看點,就留著了

最后寫入 txt 文件

# 寫入到文本def writeList(list): f = open('xsList.txt',’w’,encoding=’utf-8’) # 這里不能寫list,要先轉字符串 TypeError: write() argument must be str, not list f.write(’n’.join(list)) print(’寫入成功’)# 大概寫完的txt是這樣的id:3798160,name:第1章 孫子,我是你爺爺,key:1id:3798161,name:第2章 孫子,等等我!,key:2id:3798162,name:第3章 天上掉下個親爺爺,key:3id:3798163,name:第4章 超級大客戶,key:4id:3798164,name:第5章 一張退婚證明,key:5

ok ! Last one這里已經寫好了小說的目錄,那我們就要讀取小說的內容,同理

先寫個請求

# 請求內容地址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是個數組 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 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(): # 默認參數配置 startNum = 1261 # 起始章節 endNum = 1300 # 結束章節 # 開始主程序 f = open('nr.txt',’w’,encoding=’utf-8’) f.write('') if endNum < startNum:print(’結束條數必須大于開始條數’)return allList = getList() needList = allList[startNum-1:endNum] for item in needList:getcontext(item)time.sleep(0.2) print('全部爬取完成')完整代碼

getList.py

import requestsimport re# 請求書簽地址def req(): url = 'https://www.24kwx.com/book/4/4020/' strHtml = requests.get(url) return strHtml.text# 定義一個章節對象class Xs(object): def __init__(self,id,key,name):self._id = idself._key = keyself._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)# 轉換成書列表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) # 如果有章節 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,要先轉字符串 TypeError: write() argument must be str, not list f.write(’n’.join(list)) print(’寫入成功’)def main(): tranceList()if __name__ == ’__main__’: main()

writeTxt.py

import requestsimport reimport time# 請求內容地址def req(id): url = 'https://www.24kwx.com/book/4/4020/'+id+'.html' strHtml = requests.get(url) return strHtml.textdef getList(): f = open('xsList.txt',’r’, encoding=’utf-8’) # 這里按行讀取 line = f.readlines() f.close() return linecontextRule = 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 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(): # 默認參數配置 startNum = 1261 # 起始章節 endNum = 1300 # 結束章節 # 開始主程序 f = open('nr.txt',’w’,encoding=’utf-8’) f.write('') if endNum < startNum:print(’結束條數必須大于開始條數’)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 爬取國內小說網站的詳細內容,更多關于python 爬取小說網站的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
av在线资源| 91成人精品观看| 亚洲一级大片| 色婷婷精品视频| 麻豆一区二区99久久久久| 国产三级一区| 国产精品字幕| 日韩在线欧美| 国产欧美在线观看免费| 亚洲免费影院| 今天的高清视频免费播放成人| 亚洲三级网址| 中文日韩在线| av成人国产| 99热精品在线观看| 亚洲一区久久| 日韩精品久久理论片| 韩日一区二区三区| 新版的欧美在线视频| 美女视频一区在线观看| 美女精品网站| 免费日韩av片| 亚洲香蕉视频| 日本高清久久| 欧美在线精品一区| 日韩1区2区3区| 中文字幕视频精品一区二区三区| 成人羞羞视频播放网站| 麻豆国产欧美一区二区三区| 在线亚洲观看| 欧美日韩国产在线一区| 日韩在线综合| 视频福利一区| 激情婷婷综合| 日韩亚洲精品在线| 激情久久婷婷| 国产精品三上| 亚洲精品极品| 国产欧美日韩在线观看视频| 人人精品久久| 欧美日韩亚洲一区三区| 91午夜精品| 久久国产人妖系列| 精品国产乱码久久久久久樱花| 精品一区二区三区视频在线播放| 精品一区二区三区免费看| а√天堂8资源在线| 国产中文字幕一区二区三区| 婷婷精品在线| 国产欧美日韩视频在线| 蜜臀av在线播放一区二区三区| 久久五月天小说| 影音先锋久久精品| 国产精品sm| 久久久夜夜夜| 一区二区亚洲视频| 国产精品亚洲欧美一级在线| 日韩av网站在线免费观看| 日韩国产精品久久久| 日韩av三区| 久久超级碰碰| 日韩欧美一区二区三区免费看| 日韩综合精品| 亚洲aa在线| 亚洲啊v在线| 99成人超碰| 亚洲图片久久| 精品一区不卡| 亚洲少妇自拍| 捆绑调教日本一区二区三区| 国产成人精品一区二区三区视频| 精品国产一区二区三区av片| 国产精品久久久久久久久久白浆| 国产 日韩 欧美 综合 一区| 成人台湾亚洲精品一区二区| av最新在线| 日本不卡高清视频| 999精品在线| 国产日韩一区二区三区在线| 国产精品亚洲四区在线观看| 国产精品一区高清| 国产在线看片免费视频在线观看| 久久亚洲色图| 亚洲午夜天堂| 日本精品久久| 亚洲午夜黄色| 国产探花一区| 亚洲欧美日韩国产| 久久精品五月| 国产精品亚洲综合色区韩国| 精品一区二区三区视频在线播放| 999久久久亚洲| 久久精品97| 久久要要av| 久久成人高清| 日韩在线电影| 捆绑调教美女网站视频一区| 欧美三级网址| 欧美日韩a区| 久久成人精品| 国产一区日韩欧美| jizzjizz中国精品麻豆| 日韩精品免费视频人成| av最新在线| 国产伦理一区| 中文欧美日韩| 不卡在线一区二区| 激情欧美一区二区三区| 日本va欧美va欧美va精品| 国产精品黑丝在线播放| 欧美日韩亚洲一区二区三区在线| 日韩av中文在线观看| 久久一区二区中文字幕| 久久精品99国产精品| 国产一区二区三区精品在线观看| 亚洲v在线看| 国产中文字幕一区二区三区| 日韩国产一区| 欧美国产另类| 欧美精品中文字幕亚洲专区| 国产一区二区色噜噜| 亚洲精品1区| 欧洲激情综合| 久久亚洲黄色| 水野朝阳av一区二区三区| 色综合视频一区二区三区日韩| 欧美激情三区| 国产精品自在| 麻豆中文一区二区| 一二三区精品| 日本不卡一二三区黄网| 精品亚洲自拍| 日本免费新一区视频| 狠狠久久伊人中文字幕| 日本在线精品| 久久久成人网| 日本aⅴ亚洲精品中文乱码| 婷婷精品进入| 精品久久在线| 日本欧美不卡| 国产欧美日韩影院| 狠狠爱www人成狠狠爱综合网| 欧美有码在线| 久色成人在线| 亚洲精品日韩久久| 午夜精品一区二区三区国产| 精品国产欧美日韩一区二区三区| 亚洲高清不卡| 激情综合自拍| 国产一区2区在线观看| 欧美亚洲福利| 黄色免费成人| 国产乱码午夜在线视频| 精品一区二区三区中文字幕视频 | 国际精品欧美精品| 免费在线成人| 影音国产精品| 久久亚洲国产精品尤物| 国产中文欧美日韩在线| 伊人精品视频| 久久精品 人人爱| 在线一区欧美| 国产精品一区三区在线观看| 久久蜜桃av| 日韩在线播放一区二区| 欧美黑人做爰爽爽爽| 精品91久久久久| 中文字幕亚洲影视| 久久av一区| 国产精品蜜月aⅴ在线| 欧美精品一区二区三区精品| 色婷婷色综合| 国产免费av国片精品草莓男男 | 国产一区二区三区四区大秀| 中文字幕在线官网| 99久久久久国产精品| 国产精品主播| 日本精品影院| 久久国产免费看| 日韩中文字幕麻豆| 国产精品xxxav免费视频| 在线亚洲观看| 国产精品国产三级在线观看| 午夜精品免费| 国产日产一区| 国产欧美自拍| 红桃视频欧美| 久久精品卡一| 日韩欧美视频专区| 桃色一区二区| 久久精品一本| 香蕉精品久久| 亚洲中午字幕| 日韩一区二区三区精品| 免费观看久久av| 欧美日韩在线精品一区二区三区激情综合| 欧美另类综合| 国产精品av久久久久久麻豆网| 精品国产18久久久久久二百| 欧美日韩精品免费观看视频完整|