日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python爬虫中文小说网点查找小说并且保存到txt(含中文乱码处理方法)

發(fā)布時(shí)間:2023/12/29 python 86 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python爬虫中文小说网点查找小说并且保存到txt(含中文乱码处理方法) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

從某些網(wǎng)站看小說的時(shí)候經(jīng)常出現(xiàn)垃圾廣告,一氣之下寫個(gè)爬蟲,把小說鏈接抓取下來保存到txt,用requests_html全部搞定,代碼簡單,容易上手.

中間遇到最大的問題就是編碼問題,第一抓取下來的小說內(nèi)容保持到txt時(shí)出現(xiàn)亂碼,第二url編碼問題,第三UnicodeEncodeError

先貼源代碼,后邊再把思路還有遇到的問題詳細(xì)說明。

?

from requests_html import HTMLSession as hsdef get_story(url):global fsession=hs()r=session.get(url,headers=headers)r.html.encoding='GBK'title=list(r.html.find('title'))[0].text#獲取小說標(biāo)題nr=list(r.html.find('.nr_nr'))[0].text#獲取小說內(nèi)容nextpage=list(r.html.find('#pb_next'))[0].absolute_links#獲取下一章節(jié)絕對鏈接nextpage=list(nextpage)[0]if(nr[0:10]=="_Middle();"):nr=nr[11:]if(nr[-14:]=='本章未完,點(diǎn)擊下一頁繼續(xù)閱讀'):nr=nr[:-15]print(title,r.url)f.write(title)f.write('\n\n')f.write(nr)f.write('\n\n')return nextpagedef search_story():global BOOKURLglobal BOOKNAMEhaveno=[]booklist=[]bookname=input("請輸入要查找的小說名:\n")session=hs()payload={'searchtype':'articlename','searchkey':bookname.encode('GBK'),'t_btnsearch':''}r=session.get(url,headers=headers,params=payload)haveno=list(r.html.find('.havno'))#haveno有值,則查找結(jié)果如果為空booklist=list(r.html.find('.list-item'))#booklist有值,則有多本查找結(jié)果while(True):if(haveno!=[] and booklist==[]):print('Sorry~!暫時(shí)沒有搜索到您需要的內(nèi)容!請重新輸入')search_story()breakelif(haveno==[] and booklist!=[]):print("查找到{}本小說".format(len(booklist)))for book in booklist:print(book.text,book.absolute_links)search_story()breakelse:print("查找到結(jié)果,小說鏈接:",r.url)BOOKURL=r.urlBOOKNAME=booknamebreakglobal BOOKURL global BOOKNAME url='http://m.50zw.net/modules/article/waps.php' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36 OPR/53.0.2907.99' }search_story() chapterurl=BOOKURL.replace("book","chapters") session=hs() r=session.get(chapterurl,headers=headers) ch1url=list(r.html.find('.even'))[0].absolute_links#獲取第一章節(jié)絕對鏈接 ch1url=list(ch1url)[0] global f f=open(BOOKNAME+'.txt', 'a',encoding='gb18030',errors='ignore') print("開始下載,每一章節(jié)都需要爬到,速度快不了,請等候。。。。\n") nextpage=get_story(ch1url) while(nextpage!=BOOKURL):nextpage=get_story(nextpage) f.close

?

爬蟲思路及遇到的問題分析如下:

先查找小說,并且把小說鏈接抓取下來,以網(wǎng)站http://m.50zw.net/modules/article/waps.php為例,首先在瀏覽器中打開鏈接并且右鍵點(diǎn)檢查,選擇Network標(biāo)簽,我用的是chrome瀏覽器,按F1設(shè)置把Network底下的Preserve log勾選上,方便接下來查找log,以搜索‘帝后世無雙’為例,搜索到結(jié)果后直接跳到了此本小說的url:http://m.50zw.net/book_86004/

?

查看到請求方式是GET,Request URL是?http://m.50zw.net/modules/article/waps.php?searchtype=articlename&searchkey=%B5%DB%BA%F3%CA%C0%CE%DE%CB%AB&t_btnsearch=

然后分析出請求參數(shù)有三個(gè),searchtype先固定用圖書名來查找,而searchkey我們輸入的是”敵后世無雙“,url encoding成了%B5%DB%BA%F3%CA%C0%CE%DE%CB%AB,我們在python ide里邊分別輸入:

"敵后世無雙".encode('GBK'):b'\xb5\xd0\xba\xf3\xca\xc0\xce\xde\xcb\xab'

"敵后世無雙".encode('utf-8'):b'\xe6\x95\x8c\xe5\x90\x8e\xe4\xb8\x96\xe6\x97\xa0\xe5\x8f\x8c'

對照輸出結(jié)果我們知道這里url編碼采用的是GBK

接下來我們用代碼來驗(yàn)證我們分析的結(jié)果

from requests_html import HTMLSession as hs url='http://m.50zw.net/modules/article/waps.php' payload={'searchtype':'articlename','searchkey':'帝后世無雙','t_btnsearch':''} headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36 OPR/53.0.2907.99' } session=hs() r=session.get(url,headers=headers,params=payload) print(r.url)

?

?運(yùn)行結(jié)果:

http://m.50zw.net/modules/article/waps.php?searchtype=articlename&searchkey=%E5%B8%9D%E5%90%8E%E4%B8%96%E6%97%A0%E5%8F%8C&t_btnsearch=

比較得到的url跟我們剛才手動(dòng)輸入后得到的url有出入,代碼里邊如果沒有指定編碼格式的話了這里url編碼默認(rèn)是urf-8,因?yàn)榫幋a問題我們沒有得到我們想要的結(jié)果,那接下來我們修改代碼指定編碼試試

payload={'searchtype':'articlename','searchkey':'帝后世無雙'.encode('GBK'),'t_btnsearch':''}

?

這回運(yùn)行結(jié)果得到我們想要的url:

?http://m.50zw.net/book_86004/

好,成功了!!!

那接下來我們要獲取第一章節(jié)的鏈接,中間用到了requests_html來抓取絕對鏈接

bookurl='http://m.50zw.net/book_86004/' chapterurl=bookurl.replace("book","chapters") session=hs() r=session.get(chapterurl,headers=headers) ch1url=list(r.html.find('.even'))[0].absolute_links ch1url=list(ch1url)[0] print(ch1url)

?

?運(yùn)行結(jié)果:

http://m.50zw.net/book_86004/26127777.html

成功取得第一章節(jié)鏈接

接下來我們開始獲取小說內(nèi)容并且獲取下一章鏈接直到把整本小說下載下來為止,

在這個(gè)部分遇到UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 46:illegal multibyte sequence,這個(gè)問題最終在用open函數(shù)打開txt時(shí)加兩個(gè)參數(shù)解決encoding='gb18030',errors='ignore'.

在之前也用過另外一種方案,就是把u'\xa0'替換成跟它等效的u' ',雖然解決了'\xa0'的error,可是后來又出現(xiàn)了’\xb0'的error,總不能出現(xiàn)一個(gè)類似的rror就修改代碼替換一次,所以這個(gè)方案被放棄掉.

?

session=hs() r=session.get(ch1url,headers=headers) title=list(r.html.find('title'))[0].text nr=list(r.html.find('.nr_nr'))[0].text ##nr=nr.replace(u'\xa0',u' ') nextpage=list(r.html.find('#pb_next'))[0].absolute_links nextpage=list(nextpage)[0] if(nr[0:10]=="_Middle();"):nr=nr[11:] if(nr[-14:]=='本章未完,點(diǎn)擊下一頁繼續(xù)閱讀'):nr=nr[:-15] print(title,r.url) print(nextpage) f=open('帝后世無雙.txt', 'a',encoding='gb18030',errors='ignore') f.write(title) f.write('\n\n') f.write(nr) f.write('\n\n')

?

轉(zhuǎn)載于:https://www.cnblogs.com/springyun/p/9300474.html

總結(jié)

以上是生活随笔為你收集整理的Python爬虫中文小说网点查找小说并且保存到txt(含中文乱码处理方法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本高清不卡视频 | 97在线免费观看视频 | 日操操 | 久天堂 | 国产高清一二三区 | 91麻豆精品一区二区三区 | 国产美女精品视频国产 | 极品美女开粉嫩精品 | 动漫av在线免费观看 | 中文在线最新版天堂8 | 国产欧美123 | 久久裸体视频 | 少妇激情一区二区三区视频 | 免费av在线网址 | 久久这里只有精品9 | 久久最新精品 | 日韩精品一区二区三 | 国产精品久久婷婷六月丁香 | 调教亲女小嫩苞h文小说 | 国产在线播放一区 | 91日日| 欧美另类xxxx野战 | 国产传媒在线 | 欧美乱色 | 五月婷婷基地 | 日本久久视频 | 精品人妻伦一二三区免费 | 国产一国产二国产三 | a级一片| 亚洲自拍偷拍一区二区 | 亚洲欧美日韩精品一区 | 国产精品一二三四区 | 日韩av在线播放一区 | 最近中文字幕免费视频 | 日本伊人影院 | 国产精品久久国产精品 | 亚洲欧美一区二区三区久久 | 丝袜五月天| 99自拍视频在线观看 | 日本最黄网站 | 日韩亚州 | 国产成人精品综合久久久久99 | 国产成a人亚洲精v品在线观看 | 污污在线观看视频 | 国产麻豆剧果冻传媒白晶晶 | 国产精品7 | 日韩在线视频中文字幕 | 夜夜爽夜夜 | 日本三级免费 | 亚洲女同一区二区 | 国产精品美女久久久久图片 | 一级特黄aa大片 | 一级片黄色 | 欧美日韩免费观看一区=区三区 | 二区中文字幕 | 一区三区视频在线观看 | 国产婷婷色一区二区 | 日本欧美国产一区二区三区 | 国产精品一区二区av日韩在线 | 久久久久久久亚洲精品 | 99精品国产一区二区 | 亚洲日本综合 | 乱淫67194 | 毛片视| 99re这里只有精品首页 | 9999免费视频| 黄色视屏软件 | 亚洲欧美在线免费 | 国产精品69久久久久 | www欧美com| 日韩av电影一区 | 日韩精品毛片 | 97福利影院 | 欧美日韩午夜 | 超碰在线免费97 | 黄色短视频在线观看 | 国产日韩欧美中文 | 亚洲日本国产精品 | 久久依人网 | 4438五月天 | 毛片视频免费播放 | 黄在线观看 | 日本一本二本三区免费 | www日韩视频| 亚洲第一中文字幕 | 美女又爽又黄 | 国产一区二区三区四区五区六区 | 五月天黄色小说 | 久久久啊啊啊 | 在线黄色大片 | 春色激情站 | 日韩小视频网站 | 亚洲av无码国产精品久久久久 | 中文亚洲字幕 | 琪琪色av | 国产av天堂无码一区二区三区 | 一级黄色录象 | 自拍偷拍av | 理论片亚洲 |