### 高三网
goquery包github地址:https://github.com/PuerkitoBio/goquery
目标网站(高三网):http://www.gaosan.com/gaokao/85464.html
下面开始操作
老方法,cmd go get获取包,复制他的示例代码,安装,显然很成功
![](https://img.kancloud.cn/72/c8/72c834f732b60c692651d6a130ee8add_1367x333.png)
![](https://img.kancloud.cn/c3/7a/c37ac8be3d213c1b103bffb9795304bf_1030x642.png)
现在开始学习使用他这包的方法,根据节点爬取自己需要的内容。这里爬取这表格
![](https://img.kancloud.cn/bb/ca/bbca06c1ca9d9dc418dca24baee34cea_1829x799.png)
运行结果:
![](https://img.kancloud.cn/93/cf/93cf57ca6fdc0e7d06c2d92f8c5e3872_1531x420.png)
Find()的用法,td:nth-child(1)第一个td的标签,只有一个标签只能这样了
```
package main
import (
"fmt"
"net/http"
"github.com/PuerkitoBio/goquery"
)
// 搞一个结构体 储存json 数据
type List struct {
Schoolname string `json:"schoolname"`
Department string `json:"department"`
Region string `json:"region"`
Class string `json:"class"`
}
// 项目名称 高三网
func Gaosan() {
list := []List{}
// 使用http包的get方法 发起请求html页面
res, err := http.Get("http://www.gaosan.com/gaokao/85464.html")
// 错误处理
if err != nil {
fmt.Println(err)
}
// 结束时关闭 释放资源
defer res.Body.Close()
// 网页状态码
if res.StatusCode != 200 {
fmt.Println("请求超时!")
}
// 使用goquery包的方法加载html网页
doc, err := goquery.NewDocumentFromReader(res.Body)
if err != nil {
fmt.Println(err)
}
// 根据节点 解析网页
doc.Find("#data85464 table tr").Each(func(i int, s *goquery.Selection) {
// 抓取节点 td标签的 文字内容
// title := s.Find("td:nth-child(" + strconv.Itoa(1) + ")").Text()
//fmt.Printf("内容 %d: %s\n", i, title)
// 这样输出也可以
// fmt.Println(s.Text())
schoolname := s.Find("td:nth-child(1)").Text()
department := s.Find("td:nth-child(2)").Text()
region := s.Find("td:nth-child(3)").Text()
class := s.Find("td:nth-child(4)").Text()
list = append(list, List{
Schoolname: schoolname,
Department: department,
Region: region,
Class: class,
})
})
// 输出 josn的结构体
fmt.Println(list)
}
func main() {
Gaosan()
}
```
- 安装开发环境
- 安装开发环境
- 安装详细教程
- 引入包
- Go语言基础
- 基本变量与数据类型
- 变量
- 数据类型
- 指针
- 字符串
- 代码总结
- 常量与运算符
- 常量
- 运算符
- 流程控制
- if判断
- for循环
- switch分支
- goto跳转
- 斐波那契数列
- Go语言内置容器
- 数组
- 切片
- 映射
- 函数
- 函数(上)
- 函数(中)
- 函数(下)
- 小节
- 包管理
- 结构体
- 结构体(上)
- 结构体(中)
- 结构体(下)
- 小节
- 错误处理
- 错误处理
- 宕机
- 错误应用
- 小节
- 文件操作
- 获取目录
- 创建和删除目录
- 文件基本操作(上)
- 文件基本操作(中)
- 文件基本操作(下)
- 处理JSON文件
- 接口与类型
- 接口的创建与实现
- 接口赋值
- 接口嵌入
- 空接口
- 类型断言(1)
- 类型断言(2)
- 小节
- 并发与通道
- goroutine协程
- runtime包
- 通道channel
- 单向通道channel
- select
- 线程同步
- 多线程的深入学习
- http编程
- http简介
- Client和Request
- get请求
- post请求
- 模块函数方法
- 模块
- fmt库,模块
- 项目练习
- 爬虫:高三网
- 爬虫:快代理
- 爬虫:快代理2
- 多线程:通道思路
- 多线程爬虫:快代理