成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

python 爬取國內小說網站

瀏覽:4日期: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 編程
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美精品国产精品| 蜜桃精品视频在线| 精品国产一区二区三区av性色| 久久精品91| 一区二区三区福利| 亚洲午夜在线观看| 狠狠色综合色区| 欧美大片一区| 欧美精品一区二区三区在线看午夜 | 91片黄在线观看| av在线不卡免费看| 91在线精品秘密一区二区| 成a人片国产精品| 不卡区在线中文字幕| 成人综合日日夜夜| 成人高清免费在线播放| av成人免费在线| 国产一区二区中文字幕免费看| 欧美二区在线| 一本一本久久| 久久久久久精| 欧美精品tushy高清| 精品国产一区二区在线观看| 久久久美女毛片| 国产精品夫妻自拍| 午夜日韩在线观看| 狠狠色丁香九九婷婷综合五月| 国产麻豆精品久久一二三| 成人自拍视频在线| 国产真实久久| 久久久久国产精品一区二区| 欧美性猛片aaaaaaa做受| 日韩免费一区二区| 国产精品毛片高清在线完整版 | 欧美fxxxxxx另类| 国产精品一区二区三区观看| 一本高清dvd不卡在线观看| 日韩精品自拍偷拍| 亚洲欧洲在线观看av| 亚洲成av人片观看| 国产91综合网| 亚洲国产激情| 欧美日韩成人高清| 国产精品国产三级国产aⅴ原创| 亚洲成人激情av| 国产乱码一区二区三区| 欧美日韩一区二区三区免费| 久久一区二区三区av| 日韩美一区二区三区| 亚洲少妇30p| 黑人精品欧美一区二区蜜桃| 91在线国产观看| 在线看国产一区二区| 国产视频911| 全部av―极品视觉盛宴亚洲| 99精品黄色片免费大全| 国产精品手机视频| 欧美成人官网二区| 午夜激情久久久| 国精品一区二区三区| 欧美日韩性生活| 亚洲欧美日韩人成在线播放| 国产精品亚洲成人| 国产精品久久久久久久久婷婷 | 精品一区二区三区免费| 亚洲精品1区2区| 日韩午夜在线观看视频| 亚洲电影在线播放| 欧美成人中文| 欧美一二三区在线| 日韩成人免费电影| 国内揄拍国内精品久久| 日韩欧美在线综合网| 性久久久久久久久| 欧美体内she精视频在线观看| 91精品欧美综合在线观看最新| 一个色妞综合视频在线观看| 91在线一区二区| 正在播放一区二区| 日韩精品久久理论片| 一区二区视频欧美| 久久久久久久电影| 国产精品18久久久久| 色婷婷久久一区二区三区麻豆| 中文字幕亚洲一区二区av在线 | 韩日成人av| 久久久久久久网| 成人精品视频.| 555夜色666亚洲国产免| 日精品一区二区三区| 中国女人久久久| ...中文天堂在线一区| 色综合久久综合| 精品国产乱码久久| av不卡在线播放| 精品久久久网站| 成人高清免费观看| 欧美成人三级在线| 成人一区在线观看| 日韩一区二区高清| 国产99精品视频| 日韩欧美你懂的| 成人中文字幕合集| 欧美成人三级电影在线| 成人国产精品免费观看视频| 日韩午夜激情免费电影| 国产suv精品一区二区883| 91精品国产综合久久久久久漫画 | 99久久久国产精品免费蜜臀| 日韩精品一区二区在线| 成人精品免费看| 久久色在线视频| 欧美成人综合| 中文字幕中文字幕一区| 亚洲高清毛片| 亚洲午夜久久久久| 在线观看国产精品网站| 久久99精品国产| 7777精品伊人久久久大香线蕉| 国产另类ts人妖一区二区| 日韩视频免费观看高清完整版 | 日韩午夜在线观看| 欧美破处大片在线视频| 亚洲天堂福利av| 久久另类ts人妖一区二区| 久久精品国产**网站演员| 欧美日韩dvd在线观看| 床上的激情91.| 成人免费一区二区三区在线观看| 99精品视频免费| 老汉av免费一区二区三区| 欧美一区二区在线视频| 午夜精品电影| 午夜视频一区二区| 日韩视频永久免费| 亚洲黄色影院| 久久99国产精品久久| 日韩精品一区二区在线| 狠狠色综合网站久久久久久久| 亚洲国产精品综合小说图片区| 欧美日韩免费观看一区二区三区| 成人免费va视频| 一区二区三区久久| 777奇米四色成人影色区| 欧美在线视频一区二区三区| 亚洲一区二区四区蜜桃| 欧美一区二区三级| 亚洲高清免费| 国产成人自拍网| 亚洲一区精品在线| 欧美一级国产精品| 91久久极品少妇xxxxⅹ软件| 黄页网站大全一区二区| 亚洲欧洲一区二区三区| 欧美美女一区二区在线观看| 狠狠久久婷婷| 国产一区二区h| 亚洲黄色小视频| 欧美大片在线观看| 久久久久国产精品午夜一区| 91麻豆精品在线观看| 日本三级韩国三级欧美三级| 国产欧美一区二区精品秋霞影院 | 一区二区三区日韩在线观看| 6080午夜不卡| 国产婷婷精品| 午夜精品久久99蜜桃的功能介绍| 蜜臀精品久久久久久蜜臀| 亚洲国产精品精华液2区45| 欧美撒尿777hd撒尿| 激情久久久久久| 国产成都精品91一区二区三| 伊人色综合久久天天人手人婷| 欧美大片在线观看一区二区| 久久夜色精品| 99成人在线| 91在线视频观看| 国产一区二区三区国产| 午夜精品免费在线观看| 日韩一区中文字幕| 久久久综合激的五月天| 欧美人体做爰大胆视频| 六月天综合网| 国产精品日韩久久久| 欧美日韩另类丝袜其他| 成人高清在线视频| 国产成人av电影在线播放| 精品在线播放免费| 日韩精品一二三区| 一区二区成人在线| 亚洲精品乱码久久久久久久久| 久久久综合精品| 久久精品视频一区| 精品少妇一区二区三区日产乱码| 欧美在线免费观看视频| 久久精品系列| 久久福利毛片| 老妇喷水一区二区三区| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲毛片在线|