Go 爬虫:如何获取 js 文件中固定的内容?

栏目: JavaScript · 发布时间: 7年前

内容简介:我想爬豆瓣电影的分类,网址是我自己看了一下接口调用,发现这些分类竟然是在妹的,这就尴尬了,我岂不是要等待浏览器渲染完之后再匹配我想要的数据?

简介

Go 爬虫:如何获取 js 文件中固定的内容?

我想爬豆瓣电影的分类,网址是 https://movie.douban.com/tag/ 。发现调用接口,返回的数据并没有我所需要的内容。

我自己看了一下接口调用,发现这些分类竟然是在 app.js 的二维数组固定写死的。

Go 爬虫:如何获取 js 文件中固定的内容?

妹的,这就尴尬了,我岂不是要等待浏览器渲染完之后再匹配我想要的数据?

查查 Go 有没有库可以模拟浏览器的操作。发现了一个 chromedp 。于是查找了一些资料,学习了一下。

github地址

仓库地址: https://github.com/chromedp/chromedp

例子地址: https://github.com/chromedp/examples

代码

获取豆瓣网站的电影分类。

// Command text is a chromedp example demonstrating how to extract text from a
// specific element.
package main

import (
    "context"
    "fmt"
    "log"
    "os"
    "regexp"
    "time"

    "github.com/chromedp/chromedp"
    "github.com/chromedp/chromedp/runner"
)



func text(res *string) chromedp.Tasks {
    return chromedp.Tasks{
        // 访问页面
        chromedp.Navigate(`https://movie.douban.com/tag/`),
        // 等待列表渲染
        chromedp.Sleep(5 * time.Second),
        // 获取获取服务列表HTML
        chromedp.OuterHTML("#content", res, chromedp.ByID),
    }
}

func main() {

    ctx, cancel := context.WithCancel(context.Background())
    defer cancel()

    // 创建 chrome 实例
    cdp, err := chromedp.New(ctx, chromedp.WithLog(log.Printf))
    if err != nil {
        log.Fatal(err)
    }

    var res string

    //执行调用
    err = cdp.Run(ctx, text(&res))
    if err != nil {
        log.Fatal(err)
    }

    // 调用 Shutdown
    err = cdp.Shutdown(ctx)
    if err != nil {
        log.Fatal(err)
    }

    // 等待 chrome 结束
    err = cdp.Wait()
    if err != nil {
        log.Fatal(err)
    }

    // 正则匹配所要的内容
    pattern := `class="tag">(.*?)</span>`
    rp2 := regexp.MustCompile(pattern)
    data := rp2.FindAllStringSubmatch(res, -1)

    // 创建一个 txt 文件,写入获取的内容
    f, err := os.Create("fenlei.txt")
    if err != nil {
        log.Fatalln(err)
    }
    // 关闭 f
    defer f.Close()

    // 遍历切片,获取需要的内容,并写入 txt 文件
    for i := 0; i < len(data); i++ {
        fmt.Println(data[i][1])
        f.WriteString(data[i][1] + "\n")

    }

}

以上所述就是小编给大家介绍的《Go 爬虫:如何获取 js 文件中固定的内容?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

风口上的汽车新商业

风口上的汽车新商业

郭桂山 / 人民邮电出版社 / 59

本书从互联网+汽车趋势解析、汽车电商困局突围策略、汽车后市场溃败求解等三个篇章详细阐述了作者的观察与思考,当然更多的还是作者在汽车电商行业的实践中得出的解决诸多问题的战略策略,作者站在行业之巅既有战略策略的解决方案,同时也有战术上的实施细则,更有实操案例解析与行业大咖访谈等不可多得的干货。当然,作者一向追崇的宗旨是,书中观点的对错不是最重要的,重在与行业同仁探讨,以书会友,希望作者的这块破砖头,能......一起来看看 《风口上的汽车新商业》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具