您的位置:首页 > 编程语言 > Go语言

[置顶] 【go语言爬虫】go语言爬取豆瓣电影top250

2017-05-25 09:34 921 查看
一、需求分析

用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)

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: