Golang爬蟲 爬取最簡單的豆瓣電影 Top250

爬蟲是標配了,看數據那一刻頗有趣。第一個就從最最最簡單最基礎的爬蟲開始寫起吧!html

原文地址:爬取最簡單的豆瓣電影 Top250
項目地址:https://github.com/go-crawler...git

目標

咱們的目標站點是 豆瓣電影 Top250,估計你們都很眼熟了github

本次爬取8個字段,用於簡單的歸納分析。具體的字段以下:golang

image

簡單的分析一下目標源app

  • 一頁共25條
  • 含分頁(共10頁)且分頁規則是正常的
  • 每一項的數據字段排序都是規則且不變

開始

因爲量不大,咱們的爬取步驟以下url

  • 分析頁面,獲取全部的分頁
  • 分析頁面,循環爬取全部頁面的電影信息
  • 爬取的電影信息入庫

安裝

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

運行

$ go run main.go

代碼片斷

一、獲取全部分頁

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
}

二、分析豆瓣電影信息

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
}

數據

image

image

image

看到這些數據,你有什麼想法呢,真是好奇 :=)spa

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息