分享
  1. 首页
  2. 文章

Golang爬虫 爬取豆瓣电影 Top250

煎鱼 · · 3457 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

爬取豆瓣电影 Top250

爬虫是标配了,看数据那一刻很有趣。第一个就从最最最简单最基础的爬虫开始写起吧!

项目地址:https://github.com/go-crawler...

目标

我们的目标站点是 豆瓣电影 Top250,估计大家都很眼熟了

本次爬取8个字段,用于简单的概括分析。具体的字段如下:

简单的分析一下目标源

  • 一页共25条
  • 含分页(共10页)且分页规则是正常的
  • 每一项的数据字段排序都是规则且不变

开始

由于量不大,我们的爬取步骤如下

  • 分析页面,获取所有的分页
  • 分析页面,循环爬取所有页面的电影信息
  • 爬取的电影信息入库

安装

$ go get -u github.com/PuerkitoBio/goquery

运行

$ go run main.go

代码片段

1、获取所有分页

func ParsePages(doc *goquery.Document) (pages []Page) {
 pages = append(pages, Page{Page: 1, Url: ""})
 doc.Find("#content > div > div.article > div.paginator > a").Each(func(i int, s *goquery.Selection) {
 page, _ := strconv.Atoi(s.Text())
 url, _ := s.Attr("href")
 pages = append(pages, Page{
 Page: page,
 Url: url,
 })
 })
 return pages
}

2、分析豆瓣电影信息

func ParseMovies(doc *goquery.Document) (movies []Movie) {
 doc.Find("#content > div > div.article > ol > li").Each(func(i int, s *goquery.Selection) {
 title := s.Find(".hd a span").Eq(0).Text()
 ...
 movieDesc := strings.Split(DescInfo[1], "/")
 year := strings.TrimSpace(movieDesc[0])
 area := strings.TrimSpace(movieDesc[1])
 tag := strings.TrimSpace(movieDesc[2])
 star := s.Find(".bd .star .rating_num").Text()
 comment := strings.TrimSpace(s.Find(".bd .star span").Eq(3).Text())
 compile := regexp.MustCompile("[0-9]")
 comment = strings.Join(compile.FindAllString(comment, -1), "")
 quote := s.Find(".quote .inq").Text()
 ...
 log.Printf("i: %d, movie: %v", i, movie)
 movies = append(movies, movie)
 })
 return movies
}

数据

看到这些数据,你有什么想法呢,真是好奇 :=)


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:煎鱼

查看原文:Golang爬虫 爬取豆瓣电影 Top250

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
3457 次点击
3 回复 | 直到 2018年03月22日 11:18:24
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏