码迷,mamicode.com
首页 > Web开发 > 详细

搭建golang学习环境,并用chrome headless获取网页内容

时间:2019-01-24 18:48:01      阅读:853      评论:0      收藏:0      [点我收藏+]

标签:依赖   github   val   搭建   错误提示   directory   ali   oob   err   

想用go练练手(我是win7系统,已从https://studygolang.com/dl 下载了go安装包并安装,比较简单,不详述。

但作为边民,没法go get ,又不敢用梯子,幸亏有爱心大牛们的国内镜像。

1、首先感谢gowalker,gopm 七牛 以及啃、萝卜、萝卜头go语言缔造者

2、因为国内用不了go get ,如果从gopm网页上手工下载包的话,相关依赖包下载太麻烦。后来发现有gopm工具。

首先从https://gowalker.org/ 搜索 gopm,根据包在github上的路径github.com/gpmgo/gopm,到gopm.io上下载,保存到相应目录下。

用go install安装,可能要根据错误提示修改目录名,及安装依赖包github.com/Unknwon/com

3、我运行go install后,在$gopath\bin下生成gopm.exe(将这个路径加入环境变量,我的gopath路径设为了E:\goapp,将手工下载的包放到了E:\goapp\src\github.com下。修改环境变量后可能需要重启电脑)

4、我是在$gopath\src\github.com目录下运行:

gopm get  github.com/chromedp/chromedp

经过漫长等待,提示如下,

E:\goapp\src\github.com>gopm get github.com/chromedp/chromedp
[GOPM] 01-24 16:30:17 [ERROR] Skipped invalid package: net/htt
p/httptrace@branch:<UTD>
[GOPM] 01-24 16:30:17 [ERROR] golang.org/x/image: fail to rena
me directory: rename C:/Users/Administrator/.gopm/repos/golang.org/x/image-183be
bdce1b249c42a7cf6772817e8c2e873b966 C:/Users/Administrator/.gopm/repos/golang.or
g/x/image: Access is denied.

心中一惊,难道又要困死墙内!仔细一看,不是大问题,怀疑是360搞的鬼。于是按照提示手工修改文件名为 C:/Users/Administrator/.gopm/repos/golang.or

g/x/image,成功。(我的是gopm将包下载到了C:\Users\Administrator\.gopm\repos\ 之下。)

6、现在可以到http://www.runoob.com/go/go-tutorial.html入门学习了。

7、使用以下代码测试一下chromedp

// Command screenshot is a chromedp example demonstrating how to take a
// screenshot of a specific element.
package main

import (
    "context"
    "io/ioutil"
    "log"
    "time"

    "github.com/chromedp/chromedp"
)

func main() {
    var err error

    // create context
    ctxt, cancel := context.WithCancel(context.Background())
    defer cancel()

    // create chrome instance
    c, err := chromedp.New(ctxt, chromedp.WithLog(log.Printf))
    if err != nil {
        log.Fatal(err)
    }

    // run task list
    var buf []byte
    //err = c.Run(ctxt, screenshot(`https://brank.as/`, `#contact-form`, &buf))
    err = c.Run(ctxt, screenshot(`http:/baidu.com/`, `#wrapper`, &buf))

    if err != nil {
        log.Fatal(err)
    }

    // shutdown chrome
    err = c.Shutdown(ctxt)
    if err != nil {
        log.Fatal(err)
    }

    // wait for chrome to finish
    err = c.Wait()
    if err != nil {
        log.Fatal(err)
    }

    err = ioutil.WriteFile("contact-form.png", buf, 0644)
    if err != nil {
        log.Fatal(err)
    }
}

func screenshot(urlstr, sel string, res *[]byte) chromedp.Tasks {
    return chromedp.Tasks{
        chromedp.Navigate(urlstr),
        chromedp.Sleep(2 * time.Second),
        chromedp.WaitVisible(sel, chromedp.ByID),
        //chromedp.WaitNotVisible(`div.v-middle > div.la-ball-clip-rotate`, chromedp.ByQuery),
        chromedp.Screenshot(sel, res, chromedp.NodeVisible, chromedp.ByID),
    }
}

运行后,在当前目录下生成了名为contact-form.png百度快照。

 

搭建golang学习环境,并用chrome headless获取网页内容

标签:依赖   github   val   搭建   错误提示   directory   ali   oob   err   

原文地址:https://www.cnblogs.com/pu369/p/10315988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!