```
package main
import (
"fmt"
"io/ioutil"
"net/http"
"os"
"strconv"
"time"
)
func work(start int , end int) {
time.Sleep(time.Second * 1)
for i:=start; i<=end; i++{
//抓取數據
url := "https://tieba.baidu.com/f?kw=%E7%BB%9D%E5%9C%B0%E6%B1%82%E7%94%9F&ie=utf-8&pn="+ strconv.Itoa((i-1)*50)
data, err := http_get(url)
if err != nil {
fmt.Println("http get err : ", err)
continue
}
//保存到文件
f, err := os.Create("第"+strconv.Itoa(i)+"頁.html")
if err != nil {
fmt.Println("寫入文件失敗 : ", i, err)
continue
}
f.WriteString(data)
f.Close()
}
}
func http_get(url string)(result string, err error) {
resp, err := http.Get(url)
if err != nil {
return
}
data, err := ioutil.ReadAll(resp.Body)
if err != nil {
return
}
result = string(data)
return
}
func main() {
var start, end int
fmt.Print("請輸入起始頁:")
fmt.Scan(&start)
fmt.Print("請輸入終止頁:")
fmt.Scan(&end)
//開始爬
work(start, end)
}
```
- 認識Golang
- 環境配置
- 找不到包
- civil
- 語言基礎
- 執行流程
- 標準命令
- 輸入輸出
- 常量與變量
- 常量的定義和使用
- 變量
- 枚舉
- 數據類型
- 結構體
- 定義和使用
- 函數參數
- 普通數據類型
- 數值型
- 整型
- 浮點類型
- 布爾
- 字符
- 字符串
- 類型轉換
- 復雜數據類型
- 指針
- 定義和使用
- 空指針
- 野指針
- new
- 函數參數
- 數組
- 定義
- 切片
- 切片
- Map
- 定義和使用
- 流程控制
- if
- switch
- for
- break
- continue
- goto
- 函數
- 函數的定義與使用
- 不定參函數
- 函數返回值
- 作用域
- 匿名函數
- 閉包
- 傳值方式
- 常用函數
- 日期
- 包
- 面向對象
- 異常處理
- 文件讀寫
- 正則
- io
- Reader
- Writer
- 接口
- 測試
- os
- json
- Marshal
- Unmarshal
- 網絡編程
- go程
- runtime
- channel
- 無緩沖channel
- 關閉channel
- 單向channel
- 生產者消費者模型
- 定時器
- tcp
- tcp_server
- tcp_client
- tcp_server_并發
- tcp_client_并發
- 常用框架
- http
- server
- get
- head
- 爬蟲
- 百度貼吧
- 百度貼吧( 并發)
- GTK
- beego
- 環境搭建
- model
- 增
- 刪
- 改
- 查
- 模塊
- context
- httplib
- etcd
- 簡介
- 安裝
- 使用
- net/html
- goquery
- redis
- redigo
- 爬蟲
- gocolly/colly
- 區塊鏈
- 微服務
- 服務發現
- consul
- 簡介