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

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

1、首先感谢gowalker.com,gopm.io 七牛 以及啃、萝卜、萝卜头go语言缔造者,以及sourcegraph.com ,studygolang, csdn, gitee(这里有一篇从码云clone代码的文章:https://www.cnblogs.com/shen-hua/p/6022740.html)

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] [36m01- ::[0m [[31mERROR[0m] Skipped invalid package: net/htt
p/httptrace@branch:<UTD>
[GOPM] [36m01- ::[0m [[31mERROR[0m] 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/cdproto/cdp"
"github.com/chromedp/cdproto/network"
"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, )
if err != nil {
log.Fatal(err)
}
} func screenshot(urlstr, sel string, res *[]byte) chromedp.Tasks {
return chromedp.Tasks{
//设置UserAgent,不知道成功否?
chromedp.ActionFunc(func(ctxt context.Context, h cdp.Executor) error {
a := map[string]interface{}{
"UserAgent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"}
network.SetExtraHTTPHeaders(a).
Do(ctxt, h)
log.Println(a)
return nil
}),
chromedp.Navigate(urlstr),
chromedp.Sleep( * time.Second),
chromedp.WaitVisible(sel, chromedp.ByID),
chromedp.Sleep( * time.Second),
//chromedp.WaitNotVisible(`div.v-middle > div.la-ball-clip-rotate`, chromedp.ByQuery),
chromedp.Screenshot(sel, res, chromedp.NodeVisible, chromedp.ByID),
}
}

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

可以用以下代码启动headless chrome ,可在windows任务管理器中看到。

exec.Command("cmd", "/c", "start", "chrome", "--headless", "--remote-debugging-port=9222").Run()

搭建golang学习环境,并用chrome headless获取网页内容的更多相关文章

  1. golang使用chrome headless获取网页内容

    如今动态渲染的页面越来越多,爬虫们或多或少都需要用到headless browser来渲染待爬取的页面. 而最近广泛使用的headless browser解决方案PhantomJS已经宣布不再继续维护 ...

  2. Windows下visual studio code搭建golang开发环境

    Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...

  3. 用Qemu搭建aarch32学习环境

    作者信息 作者: 彭东林 邮箱: pengdonglin137@163.com QQ: 405728433 软件平台 主机: Ubuntu14.04 64位版本 模拟器:Qemu-2.8.0 Linu ...

  4. 用Qemu搭建x86_64学习环境

    作者信息 作者:彭东林 邮箱:pengdonglin137@163.com QQ:405728433 软件平台 主机: Ubuntu14.04 64位版本 模拟器:Qemu-2.8.0 Linux内核 ...

  5. 用Qemu搭建x86学习环境

    作者信息 作者:彭东林 邮箱:pengdonglin137@163.com QQ:405728433 软件平台 主机: Ubuntu14.04 64位版本 模拟器:Qemu-2.8.0 Linux内核 ...

  6. 云端搭建Linux学习环境 链接https://edu.aliyun.com/article/19 (阿里云ECS服务器 )课堂

    云端搭建Linux学习环境 链接https://edu.aliyun.com/article/19 1. 开通云服务器 2 1.包年包月   按量付费(适合测试数据的时候) 2 2.地域   服务器数 ...

  7. 使用Qemu运行Ubuntu文件系统 —— 搭建SVE学习环境(2)

    开发环境 PC:ubuntu18.04 Qemu:4.1 Kernel:Linux-5.2 概述 由于要学习ARM的SVE技术,但是目前还没有支持SVE指令的板子,所以只能用Qemu来模拟,但是发现Q ...

  8. 基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境

    基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境 前言一.环境准备环境介绍软件下载VMware下安装UbuntuUbuntu下Anaconda的安 ...

  9. ubuntu18.04下搭建深度学习环境anaconda2+ cuda9.0+cudnn7.0.5+tensorflow1.7【原创】【学习笔记】

    PC:ubuntu18.04.i5.七彩虹GTX1060显卡.固态硬盘.机械硬盘 作者:庄泽彬(欢迎转载,请注明作者) 说明:记录在ubuntu18.04环境下搭建深度学习的环境,之前安装了cuda9 ...

随机推荐

  1. Java学习笔记之——自动装箱与拆箱

    自动装箱与拆箱 基本类型与引用类型的互相转换 1. 基本类型对应的包装类 byte    short       char      int       long    flaot    double ...

  2. MySQL技巧(三)运算符与函数

  3. Node.js性能分析神器Easy-Monitor

    摘要: 使用Easy-Monitor,可以准确定位Node.js应用的性能瓶颈,帮助我们优化代码性能. 当应用出现性能问题时,最大的问题在于:如何准确定位造成性能瓶颈的代码呢?对于Node.js开发者 ...

  4. js实现本地图片文件拖拽效果

    如何拖拽图片到指定位置,具体方法如下 在从本地上传图片的时候,如果使用拖拽效果,想想应该是更加的高大上,下面直接上js代码 完整代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  5. SqL读取XML、解析XML、SqL将XML转换DataTable、SqL将XML转换表

    DECLARE @ItemMessage XML )) SET @ItemMessage=N' <ReceivablesInfos> <ReceivablesList> < ...

  6. BZOJ 1874: [BeiJing2009 WinterCamp]取石子游戏(SG函数)

    Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 871  Solved: 365[Submit][Status][Discuss] Description ...

  7. js判断当前内容是否为空

    function isValue(o) { return (this.isObject(o) || this.isString(o) || this.isNumber(o) || this.isBoo ...

  8. 微信小程序心得

    首先从官方文档给的框架说起,微信小程序官方文档给出了app.js, app.json, app.wxss. 先从这三个文件说起. - app.js 这个文件是整个小程序的入口文件,开发者的逻辑代码在这 ...

  9. SD Consultant Year End Activities

    SD Consultant Year End Activities What are the year ending activities to be done for SAP SD?   S.No ...

  10. Android 弹性布局 FlexboxLayout了解一下

    原文链接:https://mp.weixin.qq.com/s/Mi3cK7xujmEMI_rc51-r4g RelativeLayout.LinearLayout等常用布局相信大家早已耳熟能详,今天 ...