使用Beego框架如何在函数中的日志中打印ID?

回复

g00355049 发起了问题 • 2 人关注 • 0 个回复 • 187 次浏览 • 2017-11-03 20:46 • 来自相关话题

golang websocket android连接的问题

回复

lywsbcn 发起了问题 • 1 人关注 • 0 个回复 • 287 次浏览 • 2017-09-25 11:32 • 来自相关话题

go 编写yml文件

回复

KSpeer 回复了问题 • 1 人关注 • 1 个回复 • 501 次浏览 • 2017-09-01 14:41 • 来自相关话题

语法问题,帮忙看看

gongxun 回复了问题 • 2 人关注 • 1 个回复 • 291 次浏览 • 2017-08-31 19:22 • 来自相关话题

项目中过多的使用反射等功能是不是对别的程序员不太友好?

moxie 回复了问题 • 7 人关注 • 7 个回复 • 569 次浏览 • 2017-08-17 12:46 • 来自相关话题

go在不使用任何框架的情况下,能不能进行web开发

飞雪无情 回复了问题 • 9 人关注 • 9 个回复 • 863 次浏览 • 2017-08-15 22:01 • 来自相关话题

go get github.com/elastic/beats 命令出错,求指点

voidint 回复了问题 • 3 人关注 • 3 个回复 • 488 次浏览 • 2017-08-12 09:10 • 来自相关话题

GoCN 每日新闻 -- 笔记

cyp 发表了文章 • 0 个评论 • 349 次浏览 • 2017-08-08 14:19 • 来自相关话题

GOCN每日新闻(2017-08-06)




GoCN 每日新闻(2017-04-29)


3 利用 Docker 多阶段构建功能 Use multi-stage builds,在构建环境中构建程序,使用轻量的基础镜像构建运行镜像。


5 Go项目体检器 可集成到 github 项目的 README.md



官方的依赖管理工具 dep 可以用于生产环境了

xiongwenwu 回复了问题 • 9 人关注 • 6 个回复 • 876 次浏览 • 2017-07-29 14:13 • 来自相关话题

使用JetBrains goland遇到一个问题

kyle 回复了问题 • 5 人关注 • 4 个回复 • 616 次浏览 • 2017-07-19 11:02 • 来自相关话题

使用JetBrains gogland获取不到beego conf 配置文件解决方法

回复

flewliu 发起了问题 • 1 人关注 • 0 个回复 • 486 次浏览 • 2017-07-18 10:46 • 来自相关话题

gogland 设置Run Configurations

tupunco 回复了问题 • 2 人关注 • 1 个回复 • 414 次浏览 • 2017-07-17 19:51 • 来自相关话题

Golang的fallthrough与switch的坑

qiangmzsx 发表了文章 • 7 个评论 • 486 次浏览 • 2017-07-11 10:02 • 来自相关话题

最近写Golang的是发现一个fallthrough与switch的坑:

switch value.(type) {
    ... 			查看全部
					

最近写Golang的是发现一个fallthrough与switch的坑:


switch value.(type) {
case int:
fallthrough
case int64:
//......
}

编译就报错:


cannot fallthrough in type switch

在type switch 中不能使用


fallthrough

只能修改代码:


switch value.(type) {
case int , int64:
//......
}

JetBrains 终于推出了 Golang IDE

qiangmzsx 回复了问题 • 26 人关注 • 28 个回复 • 6561 次浏览 • 2017-07-11 09:59 • 来自相关话题

golang解析网页,可以做爬虫了

朋也 发表了文章 • 0 个评论 • 898 次浏览 • 2017-06-21 13:46 • 来自相关话题

java里用Jsoup,nodejs里用cheerio,都可以相当方便的解析网页,在golang语言里也找到了一个网页解析的利器,相当的好用,选择器跟jQuery一样

安装

... 查看全部

java里用Jsoup,nodejs里用cheerio,都可以相当方便的解析网页,在golang语言里也找到了一个网页解析的利器,相当的好用,选择器跟jQuery一样



安装


go get github.com/PuerkitoBio/goquery

使用


其实就是项目的readme.md里的demo


package main

import (
"fmt"
"log"

"github.com/PuerkitoBio/goquery"
)

func ExampleScrape() {
doc, err := goquery.NewDocument("http://metalsucks.net")
if err != nil {
log.Fatal(err)
}

// Find the review items
doc.Find(".sidebar-reviews article .content-block").Each(func(i int, s *goquery.Selection) {
// For each item found, get the band and title
band := s.Find("a").Text()
title := s.Find("i").Text()
fmt.Printf("Review %d: %s - %s\n", i, band, title)
})
}

func main() {
ExampleScrape()
}

乱码问题


中文网页都会有乱码问题,因为它默认是utf8编码,这时候就要用到转码器了


安装 iconv-go


go get github.com/djimenez/iconv-go

使用方法


func ExampleScrape() {
res, err := http.Get(baseUrl)
if err != nil {
fmt.Println(err.Error())
} else {
defer res.Body.Close()
utfBody, err := iconv.NewReader(res.Body, "gb2312", "utf-8")
if err != nil {
fmt.Println(err.Error())
} else {
doc, err := goquery.NewDocumentFromReader(utfBody)
// 下面就可以用doc去获取网页里的结构数据了
// 比如
doc.Find("li").Each(func(i int, s *goquery.Selection) {
fmt.Println(i, s.Text())
})
}
}
}

进阶


有些网站会设置Cookie, Referer等验证,可以在http发请求之前设置上请求的头信息


这个不属于goquery里的东西了,想了解更多可以查看golang里的 net/http 包下的方法等信息


baseUrl:="http://baidu.com"
client:=&http.Client{}
req, err := http.NewRequest("GET", baseUrl, nil)
req.Header.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36")
req.Header.Add("Referer", baseUrl)
req.Header.Add("Cookie", "your cookie") // 也可以通过req.Cookie()的方式来设置cookie
res, err := client.Do(req)
defer res.Body.Close()
//最后直接把res传给goquery就可以来解析网页了
doc, err := goquery.NewDocumentFromResponse(res)

参考



可以愉快的爬人家的网站了




原文:https://tomoya92.github.io/2017/06/21/golang-goquery/