1. 程式人生 > >【go語言爬蟲】go語言爬取豆瓣電影top250

【go語言爬蟲】go語言爬取豆瓣電影top250

抓取欄位:電影名稱、評分、評價人數

這裡寫圖片描述

二、執行:
正在抓取第0頁……
肖申克的救贖 9.6 824764人
這個殺手不太冷 9.4 791399人
霸王別姬 9.5 589028人
阿甘正傳 9.4 678850人
美麗人生 9.5 394009人
千與千尋 9.2 630458人
辛德勒的名單 9.4 364712人
泰坦尼克號 9.2 624623人
盜夢空間 9.2 732345人
機器人總動員 9.3 480979人
海上鋼琴師 9.2 577308人
三傻大鬧寶萊塢 9.1 641152人
忠犬八公的故事 9.2 430317人
放牛班的春天 9.2 432372人
大話西遊之大聖娶親 9.2 465333人
教父 9.2 329687人
龍貓 9.1 401043人
楚門的世界 9.0 428408人
亂世佳人 9.2 261186人
天堂電影院 9.1 298513人
當幸福來敲門 8.9 517770人
觸不可及 9.1 350506人
搏擊俱樂部 9.0 391458人
十二怒漢 9.3 162947人
無間道 9.0 379235人
正在抓取第1頁……
熔爐 9.2 230668人
指環王3:王者無敵 9.1 274576人
怦然心動 8.9 516559人
天空之城 9.0 317896人
羅馬假日 8.9 370862人
少年派的奇幻漂流 9.0 557923人
大話西遊之月光寶盒 8.9 377930人
鬼子來了 9.1 215894人
星際穿越 9.1 458151人
蝙蝠俠:黑暗騎士 9.0 301300人
兩杆大煙槍 9.0 263387人
飛屋環遊記 8.9 479900人
活著 9.0 250291人
飛越瘋人院 9.0 266980人
竊聽風暴 9.1 210963人
海豚灣 9.3 175994人
聞香識女人 8.9 306894人
V字仇殺隊 8.8 393427人
美麗心靈 8.9 292012人
教父2 9.1 177785人
哈爾的移動城堡 8.8 329450人
指環王2:雙塔奇兵 8.9 259420人
指環王1:魔戒再現 8.9 289417人
天使愛美麗 8.7 462798人
情書 8.8 355630人
正在抓取第2頁……
死亡詩社 8.9 261989人
美國往事 9.1 165768人
七宗罪 8.7 417016人
鋼琴家 9.0 193470人
獅子王 8.9 268010人
辯護人 9.1 184702人
被嫌棄的松子的一生 8.9 261601人
致命魔術 8.8 322267人
控方證人 9.6 74343人
勇敢的心 8.8 284474人
剪刀手愛德華 8.7 461650人
飲食男女 9.0 177612人
小鞋子 9.2 127801人
音樂之聲 8.9 221186人
低俗小說 8.7 314236人
入殮師 8.8 305490人
本傑明·巴頓奇事 8.7 374361人
沉默的羔羊 8.7 332710人
蝴蝶效應 8.7 361872人
黑客帝國 8.8 263790人
拯救大兵瑞恩 8.8 221863人
素媛 9.1 159897人
瑪麗和馬克思 8.9 224392人
西西里的美麗傳說 8.7 322475人
心靈捕手 8.7 253548人
正在抓取第3頁……
幽靈公主 8.8 221276人
第六感 8.8 219997人
陽光燦爛的日子 8.7 254632人
讓子彈飛 8.7 591987人
春光乍洩 8.8 226800人
大魚 8.7 236955人
大鬧天宮 9.2 90498人
射鵰英雄傳之東成西就 8.7 259390人
重慶森林 8.6 305208人
陽光姐妹淘 8.8 252293人
上帝之城 8.9 150203人
甜蜜蜜 8.7 219633人
禁閉島 8.6 334496人
致命ID 8.6 296372人
告白 8.6 319372人
一一 8.9 144124人
加勒比海盜 8.6 314012人
愛在黎明破曉前 8.7 204426人
狩獵 9.0 112979人
布達佩斯大飯店 8.7 283495人
阿凡達 8.6 500668人
斷背山 8.6 299180人
風之谷 8.8 165217人
螢火蟲之墓 8.7 191782人
瘋狂動物城 9.2 456022人
正在抓取第4頁……
摩登時代 9.2 80291人
愛在日落黃昏時 8.7 186451人
貓鼠遊戲 8.7 202371人
末代皇帝 8.8 148111人
側耳傾聽 8.8 155656人
哈利·波特與魔法石 8.6 229709人
馴龍高手 8.7 267113人
超脫 8.7 159754人
海洋 9.0 95004人
幸福終點站 8.6 213611人
穿條紋睡衣的男孩 8.8 127481人
菊次郎的夏天 8.7 165585人
燃情歲月 8.8 142374人
消失的愛人 8.7 323395人
倩女幽魂 8.6 228708人
神偷奶爸 8.5 345293人
電鋸驚魂 8.6 186192人
諜影重重3 8.7 169379人
歲月神偷 8.6 289352人
真愛至上 8.5 292293人
借東西的小人阿莉埃蒂 8.7 201807人
雨人 8.6 198321人
七武士 9.2 70156人
虎口脫險 8.9 101112人
恐怖直播 8.7 194852人
正在抓取第5頁……
貧民窟的百萬富翁 8.5 376457人
東邪西毒 8.6 233910人
記憶碎片 8.5 258781人
瘋狂原始人 8.7 348948人
殺人回憶 8.6 191049人
怪獸電力公司 8.6 221069人
紅辣椒 8.8 116235人
盧安達飯店 8.8 109739人
黑天鵝 8.5 390705人
穿越時空的少女 8.6 173268人
魂斷藍橋 8.8 122263人
戀戀筆記本 8.5 259857人
猜火車 8.5 229628人
喜宴 8.8 125182人
英雄本色 8.7 136379人
雨中曲 8.9 87275人
傲慢與偏見 8.4 278663人
小森林 夏秋篇 8.9 110985人
教父3 8.7 119653人
喜劇之王 8.4 280151人
完美的世界 9.0 72740人
縱橫四海 8.7 130696人
玩具總動員3 8.7 181584人
螢火之森 8.7 141373人
人工智慧 8.6 177331人
正在抓取第6頁……
我是山姆 8.8 93435人
浪潮 8.7 120227人
香水 8.4 256627人
冰川時代 8.4 251942人
7號房的禮物 8.7 155404人
撞車 8.6 163627人
哈利·波特與死亡聖器(下) 8.6 253235人
花樣年華 8.5 224652人
追隨 9.0 72964人
朗讀者 8.5 262929人
一次別離 8.7 122269人
碧海藍天 8.7 103214人
羅生門 8.7 112566人
秒速5釐米 8.4 269433人
夢之安魂曲 8.7 102680人
戰爭之王 8.5 162502人
荒蠻故事 8.7 114197人
可可西里 8.6 119344人
心迷宮 8.6 138691人
唐伯虎點秋香 8.3 289176人
超能陸戰隊 8.6 335960人
時空戀旅人 8.6 176282人
海盜電臺 8.6 157460人
地球上的星星 8.8 74442人
諜影重重2 8.5 147237人
正在抓取第7頁……
蝙蝠俠:黑暗騎士崛起 8.5 271620人
諜影重重 8.5 177826人
阿飛正傳 8.5 163181人
小森林 冬春篇 8.9 95803人
恐怖遊輪 8.3 285469人
遷徙的鳥 9.1 49228人
荒野生存 8.6 118434人
勇闖奪命島 8.5 132085人
綠裡奇蹟 8.7 97961人
驚魂記 8.8 74428人
達拉斯買傢俱樂部 8.6 152991人
魔女宅急便 8.4 176480人
再次出發之紐約遇見你 8.5 149095人
爆裂鼓手 8.6 212622人
未麻的部屋 8.8 81726人
卡薩布蘭卡 8.6 115202人
燕尾蝶 8.6 102340人
東京物語 9.2 45441人
牯嶺街少年殺人事件 8.7 94098人
這個男人來自地球 8.5 161029人
變臉 8.4 199136人
英國病人 8.4 164077人
被解救的姜戈 8.5 240489人
末路狂花 8.7 94801人
終結者2:審判日 8.5 130046人
正在抓取第8頁……
E.T. 外星人 8.5 140618人
叫我第一名 8.6 100803人
忠犬八公物語 9.0 49926人
哪吒鬧海 8.8 71973人
發條橙 8.4 172356人
青蛇 8.4 199167人
原始碼 8.3 378590人
穆赫蘭道 8.3 215062人
黃金三鏢客 9.1 46238人
黑客帝國3:矩陣革命 8.5 141111人
新龍門客棧 8.4 167034人
非常嫌疑犯 8.6 106123人
美國麗人 8.4 170163人
城市之光 9.2 38415人
上帝也瘋狂 8.6 89002人
無恥混蛋 8.4 205963人
初戀這件小事 8.2 421335人
勇士 8.9 80661人
愛·回家 9.0 43661人
藍色大門 8.2 256607人
曾經 8.3 190832人
無敵破壞王 8.6 171185人
麥兜故事 8.5 118569人
暖暖內含光 8.4 133623人
大衛·戈爾的一生 8.7 78897人
正在抓取第9頁……
蝴蝶 8.6 90229人
模仿遊戲 8.5 228585人
血鑽 8.5 117306人
國王的演講 8.3 311857人
與狼共舞 8.9 52670人
遺願清單 8.5 114164人
巴黎淘氣幫 8.6 98714人
荒島餘生 8.4 120698人
偷拐搶騙 8.5 107235人
夜訪吸血鬼 8.3 183949人
瘋狂的石頭 8.2 281233人
槍火 8.6 88708人
千鈞一髮 8.7 74720人
愛在午夜降臨前 8.7 102760人
愛在暹羅 8.3 207990人
中央車站 8.7 71641人
月球 8.5 130528人
壽司之神 8.8 74039人
我愛你 9.0 49781人
兩小無猜 8.1 300317人
罪惡之城 8.4 131576人
廊橋遺夢 8.5 89437人
假如愛有天意 8.2 214079人
彗星來的那一夜 8.3 146049人
黑鷹墜落 8.5 99899人
爬蟲結束,總共耗時: 1.8951084s

Process finished with exit code 0

這裡寫圖片描述

這裡寫圖片描述

三、爬蟲原始碼

package main
import (
    "fmt"
    "io/ioutil"
    "net/http"
    "regexp"
    "time"
    "os"
    "strconv"
)
//定義新的資料型別
type Spider struct {
    url    string
    header map[string]string
}


//定義 Spider get的方法
func (keyword Spider) get_html_header() string
{ client := &http.Client{} req, err := http.NewRequest("GET", keyword.url, nil) if err != nil { } for key, value := range keyword.header { req.Header.Add(key, value) } resp, err := client.Do(req) if err != nil { } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if
err != nil { } return string(body) } func parse() { header := map[string]string{ "Host": "movie.douban.com", "Connection": "keep-alive", "Cache-Control": "max-age=0", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Referer": "https://movie.douban.com/top250", } //建立excel檔案 f, err := os.Create("C:/haha3.xlsx") if err != nil { panic(err) } defer f.Close() //寫入標題 f.WriteString("電影名稱"+"\t"+"評分"+"\t"+"評價人數"+"\t"+"\r\n") //迴圈每頁解析並把結果寫入excel for i:=0;i<10;i++{ fmt.Println("正在抓取第"+strconv.Itoa(i)+"頁......") url:="https://movie.douban.com/top250?start="+strconv.Itoa(i*25)+"&filter=" spider := &Spider{url, header} html := spider.get_html_header() //評價人數 pattern2:=`<span>(.*?)評價</span>` rp2 := regexp.MustCompile(pattern2) find_txt2 := rp2.FindAllStringSubmatch(html,-1) //評分 pattern3:=`property="v:average">(.*?)</span>` rp3 := regexp.MustCompile(pattern3) find_txt3 := rp3.FindAllStringSubmatch(html,-1) //電影名稱 pattern4:=`img alt="(.*?)" src=` rp4 := regexp.MustCompile(pattern4) find_txt4 := rp4.FindAllStringSubmatch(html,-1) // 寫入UTF-8 BOM f.WriteString("\xEF\xBB\xBF") // 列印全部資料和寫入excel檔案 for i:=0;i<len(find_txt2);i++{ fmt.Printf("%s %s %s\n",find_txt4[i][1],find_txt3[i][1],find_txt2[i][1], ) f.WriteString(find_txt4[i][1]+"\t"+find_txt3[i][1]+"\t"+find_txt2[i][1]+"\t"+"\r\n") } } } func main() { t1 := time.Now() // get current time parse() elapsed := time.Since(t1) fmt.Println("爬蟲結束,總共耗時: ", elapsed) }