### 高三網
goquery包github地址:https://github.com/PuerkitoBio/goquery
目標網站(高三網):http://www.gaosan.com/gaokao/85464.html
下面開始操作
老方法,cmd go get獲取包,復制他的示例代碼,安裝,顯然很成功


現在開始學習使用他這包的方法,根據節點爬取自己需要的內容。這里爬取這表格

運行結果:

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
- 多線程:通道思路
- 多線程爬蟲:快代理