【go语言爬虫】go语言爬取豆瓣电影top250

一、需求分析
用go语言抓取 豆瓣电影top250
抓取url:
https://movie.douban.com/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)

}



已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页