平時除了寫代碼碧库,唯一的娛樂就是看看小說柜与,放松一下大腦了巧勤。但在這個網(wǎng)站廣告鋪天蓋地的環(huán)境下,想單純的看會小說也成了一個問題了弄匕。最近在學(xué)習(xí)golang,于是就想寫一個小爬蟲颅悉,把小說爬下來看而不用看到討厭的廣告了。
網(wǎng)上大多數(shù)教程都是用第三方庫迁匠,很多都是用github.com/PuerkitoBio/goquery這個庫剩瓶,但因為從來沒寫過web,對jquery的語法完全是空白城丧,而go語言圣經(jīng)上的示例用到x/net/html這個google自己維護(hù)的庫來爬網(wǎng)站的鏈接延曙,于是研究了一下這個庫,寫了一個小爬蟲亡哄,事實(shí)證明這個庫寫爬蟲完全沒問題搂鲫,只不過比goquery麻煩一點(diǎn),畢竟goquery是在這個庫的基礎(chǔ)上封裝的磺平,這個庫更底層一點(diǎn)魂仍。
特寫下這往篇日記,記心太爛拣挪,怕過一段時間又忘了擦酌。
經(jīng)過這幾天惡補(bǔ)了一下html方面的知識,對爬蟲的編寫有所了解:
一:先把網(wǎng)站源碼get到手菠劝,
二:用html.Parse解析得到html文件的結(jié)點(diǎn)樹
三:用chrome或firefox查看網(wǎng)頁的結(jié)構(gòu)赊舶,找到想要的內(nèi)容的結(jié)點(diǎn)
最后就是遞歸找到想要的結(jié)點(diǎn),然后把結(jié)點(diǎn)下的內(nèi)容寫到本地文件內(nèi)就ok了
要注意網(wǎng)頁的編碼赶诊,golang只能用utf8,國內(nèi)很多網(wǎng)站用的是gbk編碼笼平,需要轉(zhuǎn)碼,轉(zhuǎn)碼可以用
github.com/mahonia庫舔痪。
分析網(wǎng)頁結(jié)構(gòu):
找了三個網(wǎng)站做實(shí)驗寓调,起點(diǎn)(utf8),筆趣閣(gbk編碼)和新筆趣閣(utf8)锄码,起點(diǎn)的結(jié)構(gòu)和另外兩個不一樣夺英。
起點(diǎn)的:
筆趣閣的:
新筆趣閣:
代碼很少重窟,就放在一個文件里了
本來想直接貼代碼的载萌,但貼上來之后格式全亂了,只好截圖了,代碼那幾張圖是連在一起的。