使用HTMLParser解析器爬取網(wǎng)頁(yè)內(nèi)容

相關(guān)模塊的安裝

  • 1.安裝requests 模塊获搏,在終端輸入pip install requests 命令首装。使用requests 模塊進(jìn)行http請(qǐng)求圈盔,同時(shí)導(dǎo)入HTMLParser和re模塊囤屹。

    為了解決編碼帶來(lái)的困擾粟焊,默認(rèn)使用utf8編碼琅捏。

解析網(wǎng)頁(yè)內(nèi)容

  • 1.網(wǎng)頁(yè)的url是http://www.gushiwen.org/gushi/tangshi.aspx ,該網(wǎng)頁(yè)是個(gè)唐詩(shī)300首網(wǎng)頁(yè)生百,里面有唐詩(shī)300首的標(biāo)題和作者,點(diǎn)擊某首唐詩(shī)進(jìn)入其具體內(nèi)容網(wǎng)頁(yè)柄延。我們想要抓取的內(nèi)容是標(biāo)題蚀浆、作者、內(nèi)容搜吧。

  • 2.利用谷歌的chrome瀏覽器查看網(wǎng)頁(yè)源代碼市俊。需要抓取的源代碼如下:


    打開(kāi)其中的一個(gè)div標(biāo)簽,顯示如下:


    所以我們先抓取外層的div標(biāo)簽滤奈,這幾個(gè)并列的div標(biāo)簽都有一個(gè)class屬性為guwencont2,識(shí)別出外層的標(biāo)簽后就可以抓取內(nèi)層的a標(biāo)簽的內(nèi)容摆昧,包含古詩(shī)的標(biāo)題和作者。還需要抓取該古詩(shī)的url,即為href屬性值蜒程,例如/GuShiWen_6299b969fb.aspx绅你,該內(nèi)容拼接原始url為http://www.gushiwen.orghttp://www.gushiwen.org/GuShiWen_6299b969fb.aspx 即為具體內(nèi)容網(wǎng)頁(yè)。

  • 3.來(lái)到古詩(shī)的具體內(nèi)容網(wǎng)頁(yè)昭躺,同樣利用chrome的開(kāi)發(fā)者工具顯示源代碼忌锯,顯示如下:



    內(nèi)容在p標(biāo)簽中,有一個(gè)align屬性為center领炫。

  • 4.分析完如何解析出標(biāo)題作者和內(nèi)容后偶垮,開(kāi)始寫(xiě)代碼。自定義一個(gè)解釋器繼承HTMLParser ,在重寫(xiě)初始化函數(shù)__init__ 時(shí)要先初始化父類(lèi)

  HTMLParser.__init__(self)

在初始化函數(shù)中定義一個(gè)字典帝洪,用于存儲(chǔ)爬取到的標(biāo)題作者和內(nèi)容(1首詩(shī)對(duì)應(yīng)一個(gè)字典)似舵,定義一個(gè)列表用于存儲(chǔ)字典(列表中存儲(chǔ)所有詩(shī)對(duì)應(yīng)的字典)。定義幾個(gè)標(biāo)志位(用于標(biāo)記上面分析的幾個(gè)需要找到的標(biāo)簽)碟狞,以及一個(gè)正則表達(dá)式(用于分離標(biāo)題和作者)


  • 定義一個(gè)解析屬性函數(shù),html標(biāo)簽中的屬性和屬性值在htmlparser解析器中是個(gè)tuple類(lèi)型婚陪,返回屬性名對(duì)應(yīng)的屬性值族沃。


  • 重寫(xiě)handle_starttag函數(shù),該函數(shù)在查找到標(biāo)簽頭自動(dòng)調(diào)用,attrs包含該標(biāo)簽tag中所有的屬性和屬性值,類(lèi)型是個(gè)列表,其中的元素都是tuple類(lèi)型(屬性名脆淹,屬性值)常空。


  • 重寫(xiě)handle_endtag函數(shù),該函數(shù)在查找到標(biāo)簽?zāi)┪蛔詣?dòng)調(diào)用


  • 重寫(xiě)handle_data函數(shù),該函數(shù)在查找到標(biāo)簽中的內(nèi)容自動(dòng)調(diào)用盖溺,利用正則表達(dá)式進(jìn)行了匹配漓糙,如果匹配成功,匹配出來(lái)的組即為標(biāo)題和作者烘嘱。


  • 5.實(shí)例化上面寫(xiě)的SongciParser類(lèi)昆禽,傳入原始url,使用requests 獲得響應(yīng)蝇庭,把響應(yīng)的內(nèi)容喂給實(shí)例化的解析器醉鳖。

    在主函數(shù)中執(zhí)行如下代碼

解析具體網(wǎng)頁(yè)的內(nèi)容

  • 1.經(jīng)過(guò)上面的解析,已經(jīng)可以解析出唐詩(shī)300首的標(biāo)題和作者哮内,并且獲得了每首古詩(shī)的url,接下來(lái)進(jìn)入到具體古詩(shī)網(wǎng)頁(yè)中獲取內(nèi)容盗棵。同樣需要自定義一個(gè)解析器(繼承HTMLParser)


  • 2.加載每首古詩(shī)的url獲取內(nèi)容,進(jìn)行了換行處理



    在主函數(shù)中調(diào)用如下,這個(gè)只加載了前10首古詩(shī)


  • 3.下面是運(yùn)行的結(jié)果


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末北发,一起剝皮案震驚了整個(gè)濱河市纹因,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琳拨,老刑警劉巖瞭恰,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異从绘,居然都是意外死亡寄疏,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)僵井,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)陕截,“玉大人,你說(shuō)我怎么就攤上這事批什∨┣” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵驻债,是天一觀的道長(zhǎng)乳规。 經(jīng)常有香客問(wèn)我,道長(zhǎng)合呐,這世上最難降的妖魔是什么暮的? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮淌实,結(jié)果婚禮上冻辩,老公的妹妹穿的比我還像新娘猖腕。我一直安慰自己,他們只是感情好恨闪,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布倘感。 她就那樣靜靜地躺著,像睡著了一般咙咽。 火紅的嫁衣襯著肌膚如雪老玛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天钧敞,我揣著相機(jī)與錄音蜡豹,去河邊找鬼。 笑死犁享,一個(gè)胖子當(dāng)著我的面吹牛余素,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播炊昆,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼桨吊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了凤巨?” 一聲冷哼從身側(cè)響起视乐,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎敢茁,沒(méi)想到半個(gè)月后佑淀,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡彰檬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年伸刃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逢倍。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捧颅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出较雕,到底是詐尸還是另有隱情碉哑,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布亮蒋,位于F島的核電站扣典,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏慎玖。R本人自食惡果不足惜贮尖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望趁怔。 院中可真熱鬧湿硝,春花似錦闰蛔、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)任连。三九已至蚤吹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間随抠,已是汗流浹背裁着。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拱她,地道東北人二驰。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像秉沼,于是被迫代替她去往敵國(guó)和親桶雀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理唬复,服務(wù)發(fā)現(xiàn)矗积,斷路器,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,761評(píng)論 25 707
  • 今天看了篇文章,看到一半我就關(guān)了休建,因?yàn)樗麑?xiě)道乍恐,每篇文章要寫(xiě)到1700字,寫(xiě)文章要限定的這么死么测砂,無(wú)論寫(xiě)什么茵烈,圍繞著...
    憨厚的老菜鳥(niǎo)閱讀 181評(píng)論 1 1
  • 日耀國(guó) 昭德十六年冬 康寧宮內(nèi),一個(gè)身著淡粉色宮裝的小女孩向主位上的人緩緩下拜:“臣女云清秋給太后娘娘請(qǐng)安邑彪,恭...
    淺若夏茉閱讀 965評(píng)論 0 0