之前学的是python,但是遇到瓶颈了,所以想先拓宽一下知识面。技术是学不完的,在这资本恒流的时代,两三年就能将一门语言炒到火热,所以还是要坚守本心,先生存再生活。
1.新建一个项目文件,创建一个main.go文件
2.遇到代码中import报红的部分,解决方法如下
(1)打开终端或cmd, 进入到你创建的项目的路径(例如我创建的项目文件夹是test)
(2)go mod init test(test就是你创建的文件夹的名称)
(3)go mod tidy
(4)如果还有其他报错请自行搜索
package main
import (
"fmt"
"github.com/PuerkitoBio/goquery"
"log"
"net/http"
)
func main() {
authors_url := "https://so.gushiwen.cn/authors/"
res, err := http.Get(authors_url) // 请求一个网站
if err != nil{ //如果err不是nil,则说明请求发生了错误
panic(err)
}
defer res.Body.Close() // 请求完之后关闭请求窗口
if res.StatusCode != 200{ // 如果状态码不为200,则说明请求网页失败
log.Fatal("status code error: %d %s", res.StatusCode, res.Status)
}
// 调用NewDocumentFromReader传入上面的io.Reader构造一个*goquery.Document对象;
document, err := goquery.NewDocumentFromReader(res.Body)
if err != nil{
fmt.Errorf("document eror", err)
}
// Find(".sons") 其中.表示class
document.Find(".sons").Find(".cont").Find("a").Each(func(i int, selection *goquery.Selection) {
author := selection.Text()
link, _ := selection.Attr("href") //获取href的值
fmt.Printf("%d author=%s\n", i, author)
fmt.Printf("%d link=%s\n", i, link)
})
}