python一个下载小说的简易爬虫
最近再看python核心編程(第二版),看到關于文件的操作時閑著無聊,便寫了一個下載小說的簡易爬蟲。小說名字為《雪中悍刀行》基本上就是我最喜歡的一部小說了。(感覺寫書后面的關于文件的題沒意思,便寫了一個)小說網址
首先要用到一個庫是BeautifulSoup庫,兩個模塊分別是urllib模塊和os模塊。
思路如下:首先我們要獲得所有小說的url
如果打開小說網址并觀看網頁源代碼你會發現有中文,這時候我們在獲取網頁的html時要把中文忽略掉original_url_html = response_original_url.read().decode('gbk', 'ignore')。然后就是用BeautifulSoup庫來定位到小說各個章節的url。for a in original_url_soup.find(id = "list").find_all('a'),觀看網頁源碼你會發現a標簽里的href屬性只包含了390284.html,我們要再加上小說網址的url才會是各個章節的url。url = original_url + str(a.get('href'))
獲取了各個章節的url之后我們就要來把各個章節中關于小說的文字部分存到文件里面,如何保存?
上面是小說各個章節關于小說文字部分的網頁源碼。要用for each in chapter_url_soup.find(id = "content").strings:來獲取一個章節中的每一行文字,注意一下這里最后用的是.strings在后面的完整代碼中你會見到.string關于這兩個的區別可以點這里查看。在這里我們如果要把每行文字寫入文件的話要用到os模塊f.write('%s%s' % (each.replace('\xa0', ''), os.linesep))os.linsep會自動為你換行。
下面就是完整代碼
from bs4 import BeautifulSoup import urllib.request import osdef handlechapter(url):response = urllib.request.urlopen(url)html = response.read().decode('gbk', 'ignore')return htmlf = open('存小說的文件路徑', 'w', encoding='utf-8') original_url = 'http://www.37zw.net/0/761/' response_original_url = urllib.request.urlopen(original_url) original_url_html = response_original_url.read().decode('gbk', 'ignore') original_url_soup = BeautifulSoup(original_url_html, 'html.parser') for a in original_url_soup.find(id = "list").find_all('a'):chaptername = a.string#注意下這里用的是.string前面已經提到過和.strings有所區別#print('準備下載' + chaptername)f.write('\n' + chaptername + '\n')#為了美觀一點要在章節名字的前后都要換行的#url = original_url + str(a.get('href'))html = handlechapter(url)chapter_url_soup = BeautifulSoup(html, 'html.parser')for each in chapter_url_soup.find(id = "content").strings:f.write('%s%s' % (each.replace('\xa0', ''), os.linesep))print('成功下載' + chaptername) f.close()變量名字有點長,看著不是很美觀,尷尬了。
準備下載第一章 小二上酒 成功下載第一章 小二上酒 準備下載第二章 白狐兒臉 成功下載第二章 白狐兒臉 準備下載第三章 兩個酒窩 成功下載第三章 兩個酒窩 準備下載第四章 去那座山摘山楂 成功下載第四章 去那座山摘山楂 準備下載第五章 天下第一美人 成功下載第五章 天下第一美人 準備下載第六章 走一個 成功下載第六章 走一個 準備下載第七章 武媚娘望城頭 成功下載第七章 武媚娘望城頭 準備下載第八章 東魁 成功下載第八章 東魁 ...要注意的是代里沒有添加異常處理機制很可能會中斷的。不過異常處理機制還沒看到就先不管了。
第一章 小二上酒 (每一個鐘頭上傳一章,直到傳完二十章!紅票和收藏別忘了~)北涼王府龍盤虎踞于清涼山,千門萬戶,極土木之盛。作為王朝碩果僅存的異姓王,在廟堂和江湖都是毀譽參半的北涼王徐驍作為一名功勛武臣,可謂得到了皇帝寶座以外所有的東西,在西北三州,他就是當之無愧的主宰,只手遮天,翻云覆雨。難怪朝廷中與這位異姓王政見不合的大人們私下都會文縐縐罵一聲徐蠻子,而一些居心叵測的,更誅心地丟了頂“二皇帝”的帽子。今天王府很熱鬧,位高權重的北涼王親自開了中門,擺開輝煌儀仗,迎接一位仙風道骨的老者,府中下人們只聽說是來自道教圣地龍虎山的神仙,相中了癡癡傻傻的小王爺,要收作閉關弟子,這可是天大的福緣,北涼王府都解釋成傻人有傻福。可不是,小王爺自打出生起便沒哭過,讀書識字一竅不通,六歲才會說話,名字倒是威武氣派,徐龍象,傳聞還是龍虎山的老神仙當年給取的,說好十二年后再來收徒,這不就如約而至了。王府內一處院落,龍虎山師祖一級的道門老祖宗捻著一縷雪白胡須,眉頭緊皺,背負一柄不常見的小鐘馗式桃木劍,配合他的相貌,確實當得出塵二字,誰看都要由衷贊一聲世外高人吶。但此番收徒顯然遇到了不小的阻礙,倒不是王府方面有異議,而是他的未來徒弟犟脾氣上來了,蹲在一株梨樹下,用屁股對付他這個天下道統中論地位能排前三甲的便宜師傅,至于武功嘛,咳咳,前三十總該有的吧。連堂堂大柱國北涼王都得蹲在那里好言相勸,循循善誘里透著股誘拐,“兒子,去龍虎山學成一身本事,以后誰再敢說你傻,你就揍他,三品以下的文官武將,打死都不怕,爹給你撐腰。”“兒啊,你力氣大,不學武撈個天下十大高手當當就太可惜了。學成歸來,爹就給你一個上騎都尉當當,騎五花馬,披重甲,多氣派。”小王爺完全不搭理,死死盯著地面,瞧得津津有味。“黃蠻兒,你不是喜歡吃糖葫蘆嗎,那龍虎山遍地的野山楂,你隨便摘隨便啃。趙天師,是不是?”老神仙硬擠出一抹笑容,連連點頭稱是。收徒弟收到這份上,也忒寒磣了,說出去還不被全天下笑話。可哪怕位于堂堂超一品官職、在十二郡一言九鼎的大柱國口干舌燥了,少年還是沒什么反應,估計是不耐煩了嫌老爹說得呱噪,翹起屁股,噗一下來了個響屁,還不忘扭頭對老爹咧嘴一笑。把北涼王給氣得抬手作勢要打,可抬著手僵持一會兒,就作罷。一來是不舍得打,二來是打了沒意義。這兒子可真對得起名字,徐龍象,取自“水行中龍力最大,陸行中象力第一,威猛如金剛,是謂龍象”,別看綽號黃蠻兒的傻兒子憨憨笨笨,至今斗大字不識,皮膚病態的暗黃,身形比較同齡人都要瘦弱,但這氣力,卻是一等一駭人。徐驍十歲從軍殺人,從東北錦州殺匈奴到南部滅大小六國屠七十余城再到西南鎮壓蠻夷十六族,什么樣膂力驚人的猛將沒有見過,但如小兒子這般可天生銅筋鐵骨力拔山河的,真沒有。徐驍心中輕輕嘆息,黃蠻兒若能稍稍聰慧一些,心竅多開一二,將來必定可以成為陷陣第一的無雙猛將啊。他緩緩起身轉頭朝龍虎山輩分極高的道士尷尬一笑,后者眼神示意不打緊,只是心中難免悲涼,收個徒弟收到這份上,也忒不是個事兒了,一旦傳出去還不得被天下人笑話,這張老臉就甭想在龍虎山那一大幫徒子徒孫面前擺放嘍。束手無策的北涼王心生一計,嘿嘿道:“黃蠻兒,你哥游行歸來,看時辰也約莫進城了,你不出去看看?”小王爺猛地抬頭,表情千年不變的呆板僵硬,但尋常木訥無神的眼眸卻爆綻出罕見光彩,很刺人,拉住老爹的手就往外沖。可惜這北涼王府出了名百廊回轉曲徑千折,否則也容不下一座飽受朝廷清官士大夫們詬病的“聽潮亭”,手被兒子握得生疼的徐驍不得不數次提醒走錯路了,足足走了一炷香時間,這才來到府外。父子和老神仙身后,跟著一幫扛著大小箱子的奴仆,都是準備帶往龍虎山的東西,北涼王富可敵國,對兒女也是素來寵溺,見不得他們吃一點苦受一點委屈。到了府外,小王爺一看到街道空蕩,哪里有哥哥的身影,先是失望,繼而憤怒,沉沉嘶吼一聲,沙啞而暴躁,起先想對徐驍發火,但笨歸笨,起碼還知道這位是父親,否則徐驍的下場恐怕就得像前不久秋狩里倒霉遇到徐龍象的黑羆了,被單槍匹馬的十二歲少年生生撕成兩半。他怒瞪了一眼心虛的老爹,掉頭就走。不希望功虧一簣的徐驍無奈丟給老神仙一個眼神。龍虎山真人微微一笑,伸出枯竹一般的手臂,但僅是兩指搭住了小王爺的手腕,輕聲慈祥道:“徐龍象,莫要浪費了你百年難遇的天賦異稟,隨我去龍虎山,最多十年,你便可下山立功立德。”少年也不廢話,哼了一聲,繼續前往,但玄妙古怪的是他發現自己沒能掙脫老道士看似云淡風輕的束縛,那踏出去懸空的一步如何都沒能落地。北涼王如釋重負,這位道統輩分高到離譜的上人果真還是有些本事的,知子莫若父,徐驍哪里不知道小兒子的力道,霸氣得很,以至于他都不敢多安排仆人女婢給兒子,生怕一個不小心就捏斷了胳膊腿腳,這些年院中被坐壞拍爛的桌椅不計其數,也虧得北涼王府家底厚實,尋常殷實人家早就破產了。小王爺愣了一下,隨即發火,輕喝一聲,硬是帶著老神仙往前走了一步,兩步,三步。頭頂黃冠、身披道袍的真人只是微微咦了一聲,不怒反喜,悄悄加重了幾分力道,阻止了少年的繼續前行。如此一來,徐龍象是真怒了,面容猙獰如同一只野獸,伸出空閑的一只手,雙手握住老道士的手臂,雙腳一沉,咔嚓,在白玉地板上踩出兩個坑,一甩,就將老道士整個人給丟擲了出去。大柱國徐驍瞇起眼睛,絲毫不怕惹出命案,那道士若沒這個斤兩本事,摔死就摔死好了,他徐驍連不可一世的西楚王朝都給用涼州鐵騎踏平了,何時對江湖門派有過絲毫的敬畏?天下道統首領龍虎山又如何?所轄境內數個大門大派雖比不上龍虎山,但在王朝內也屬一流規模,例如那數百年一直跟龍虎山爭那道統的武當山,在江湖上夠超然了吧,還不是每年都主動派人送來三四爐珍品丹藥?老道士輕輕飄蕩到王府門口的一座兩人高漢白玉石獅子上,極富仙人氣勢。光憑這一手,若是擱在市井中,那還不得搏得滿堂喝彩啊。這按照北涼王世子即徐驍嫡長子的那個膾炙人口的說法,那就是“該賞,這活兒不簡單,是技術活”,指不定就是幾百幾千銀票打賞出去了,想當年世子殿下還沒出北涼禍害別人的時曰,多少青樓清伶或者江湖騙子得了他的闊綽賞錢。最高紀錄是一位外地游俠,在街上一言不合與當地劍客相斗,從街邊菜攤打起打到湖畔最后打到湖邊涼州最大鷂子溢香樓的樓頂,把白曰宣--銀的世子給吵醒了,立馬顧不得白嫩如羊脂美玉的花魁小娘子,在窗口大聲叫好,事后在世子殿下的摻和下官府非但沒有追究,反而差點給那名游俠送去涼州好男兒的大錦牌,他更是讓仆人快馬加鞭送去一大摞整整十萬銀票。沒有喜好玩鷹斗犬的世子殿下的大好陵州,可真是寂寞啊。正經人家的小娘們終于敢漂漂亮亮上街買胭脂了,二流紈绔們終于沒了跟他們搶著欺男霸女的魔頭了,大大小小的青樓也等不到那位頭號公子哥的一擲千金了。北涼王徐驍生有二女二子,俱是奇葩。大郡主出嫁,連克三位丈夫,成了王朝內臉蛋最俏嫁妝最多的寡婦,在江南道五郡艷名遠播,作風放浪。二郡主雖相貌平平,卻是博學多才,精于經緯,師從上陰學宮韓谷子韓大家,成了兵法大家許煌、縱橫術士司馬燦等一干帝國名流的小師妹。徐龍象是北涼王的最小兒子,相對聲名不顯,而大兒子則是連京城那邊都有大名聲的家伙,一提起大柱國徐驍,必然會扯上世子徐鳳年,“贊譽”一聲虎父無犬子,可惜徐驍是英勇在戰場上,兒子卻是爭氣在風花雪月的敗家上。三年前,世子殿下徐鳳年傳言被脖子上架著刀劍攆出了王府,被迫去學行關中豪族年輕后輩及冠禮之前的例行游歷,一晃就是三載,徹底沒了音信,陵州至今記得世子殿下出城時,城墻上十幾號大紈绔和幾十號大小花魁眼中含淚的感人畫面,只是有內幕說等世子殿下走遠了,當天,紅雀樓的酒宴便通了個宵,太多美酒倒入河內,整座城都聞得見酒香。回到王府這邊,心竅閉塞的小王爺奔跑沖向玉石獅子,似乎摔一個老頭子不過癮,這次是要把礙眼的老道連同號稱千鈞重的獅子一同摔出去。只是他剛搖晃起獅子,龍虎山老道便飄下了來,牽住少年的一只手,使出真功夫,以道門晦澀的“搬山”手法,巧妙一帶,就將屈膝半蹲的少年拉起身,輕笑道:“黃蠻兒,不要鬧,隨為師去吧。”少年一只手握住獅子底座邊角,五指如鉤,深入玉石,不肯松手,雙臂拉伸如猿猴,嘶啞嚷著:“我要等哥哥回來,哥哥說要給我帶回天下第一美女做媳婦,我要等他!”位極人臣的大柱國徐驍哭笑不得,無可奈何,望向黃冠老道,重重嘆氣道:“罷了,再等等吧,反正也快了。”老道士聞言,笑容古怪,但還是松開了小王爺的手臂,心中咂舌,這小家伙何止是天生神力,根本就是太白星下凡嘛。不過,那個叫徐鳳年的小王八蛋真的要回來了?這可不是一個好消息。想當年他頭回來王府,可是吃足了苦頭,先被當成騙吃騙喝的江湖騙子不說,那才七八歲的兔崽子直接放了一群惡犬來咬自己,后來好不容易解釋清楚,進了府邸,小王八玩意就又壞心眼了,派了兩位嬌滴滴的美嬌--娘三更半夜來敲門,說是天氣冷要暖被子,若非貧道定力超凡脫俗,還真就著了道,現在偶爾想起來,挺后悔沒跟兩位姑娘徹夜暢聊《大洞真經》和《黃庭經》,即便不聊這個,聊聊《[***]心經》也好嘛。黃昏中,官道上一老一少被余暉拉長了身影,老的背負著一個被破布包裹的長條狀行囊,衣衫襤褸,一頭白發,還夾雜幾根茅草,弄個破碗蹲地上就能乞討了,牽著一匹瘦骨嶙嶙的跛馬。小的其實歲數不小,滿臉胡茬,一身市井麻衫,逃荒的難民一般。“老黃,再撐會兒,進了城回了家,就有大塊肉大碗酒了,他娘的,以前沒覺得這酒肉是啥稀罕東西,現在一想到就嘴饞得不行,每天做夢都想。”瞧不出真實年齡的年輕男人有氣沒力道。仆人模樣的邋遢老頭子呵呵一笑,露出一口缺了門牙的黃牙,顯得賊憨厚賊可笑。“笑你個大爺,老子現在連哭都哭不出來了。”年輕人翻白眼道,他是真沒那個精神氣折騰了。兩千里歸途,就只差沒落魄到沿路乞討,這一路下水里摸過魚,上山跟兔子捉迷藏,爬樹掏過鳥窩,只要帶點葷的,弄熟了,別管有沒有鹽巴,那就都是天底下最美味的一頓飯了。期間經過村莊試圖偷點雞鴨啥的,好幾次被扛鋤頭木棍的壯漢追著跑了幾十里路,差點沒累死。哪個膏粱子弟不是鮮衣怒馬威風八面?再瞧瞧自個兒,一襲破爛麻衣,草鞋一雙,跛馬一只,還不舍得宰了吃肉,連騎都不舍得,倒是多了張蹭飯的嘴。惡奴就更沒有了,老黃這活了一甲子的小身板他光是瞅著就心慌,生怕這行走兩千里路哪天就沒聲沒息嗝屁了,到時候他連個說話的伴兒都沒有,還得花力氣在荒郊野嶺挖個坑。尚未進城,城墻外頭不遠有一個掛杏花酒的攤子,他實在是精疲力盡了,聞著酒香,閉上眼睛,抽了抽鼻子,一臉陶醉,真賊娘的香。一發狠,他走過去尋了一條唯一空著的凳子一屁股坐下,咬牙使出最后氣力喊道:“小二,上酒!”身邊出城或者進城中途歇息的酒客都嫌棄這衣著寒磣的一主一仆,刻意坐遠了。生意忙碌的店小二原本聽著聲音要附和一聲“好嘞”,可一看主仆兩人的裝束,立即就拉下臉,出來做買賣的,沒個眼力勁兒怎么樣,這兩位客人可不想是掏得出酒錢的貨色,店小二還算厚道,沒立馬趕人,只是端著皮笑肉不笑的笑臉提醒道:“我們這招牌杏花酒可要一壺二十錢,不貴,可也不便宜。”若是以前,被如此狗眼看人低,年輕人早就放狗放惡奴了,可三年世態炎涼,過習慣了身無分文的曰子,架子脾氣收斂了太多,喘著氣道:“沒事,自然有人來結賬,少不了你的打賞錢。”“打賞?”店小二扯開了嗓門,一臉鄙夷。年輕人苦笑,拇指食指放在嘴邊,把最后那點吃奶的力氣都使出來吹了一聲哨子,然后就趴在簡陋酒桌上,打鼾,竟然睡著了。店小二只覺得莫名其妙,唯有眼尖的人依稀瞧見頭頂閃過一點影子。一頭鷹隼般的飛禽如箭矢掠過城頭。大概酒客喝光一碗杏花酒的時光,大地毫無征兆地轟鳴起來,酒桌搖晃,酒客們瞪大眼睛看著酒水跟著木桌一起晃蕩,都小心翼翼捧起來,四處張望。只見城門處沖出一群鐵騎,綿延成兩條黑線,仿佛沒個盡頭。塵土飛揚中,高頭大馬,俱是北涼境內以一當百名動天下的重甲驍騎,看那為首扛旗將軍手中所拿的王旗,鮮艷如血,上書一字,“徐”!乖乖,北涼王麾下的嫡系軍。天下間,誰能與馳騁輾轉過王朝南北十三州的北涼鐵騎爭鋒?以往,西楚王朝覺得它的十二萬大戟士敢逆其鋒芒,可結果呢,景河一戰,全軍覆沒,降卒悉數坑殺,哀嚎如雷。兩百精銳鐵騎沖刺而出,浩浩蕩蕩,氣勢如虹。頭頂一只充滿靈氣的鷹隼似在領路。兩百鐵騎瞬間靜止,動作如出一轍,這份嫻熟,已經遠遠超出一般行伍悍卒百戰之兵的范疇。正四品武將折沖都尉翻身下馬,一眼看見牽馬老仆,立即奔馳到酒肆前,跪下行禮,恭聲道:“末將齊當國參見世子殿下!”而那位口出狂言要給打賞錢的寒酸年輕人只是在睡夢中呢喃了一句,“小二,上酒。”第二章 白狐兒臉...總結
以上是生活随笔為你收集整理的python一个下载小说的简易爬虫的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广西一男子酒后肇事逃逸 致环卫工人被撞身
- 下一篇: 树莓派玩转3g模块