package main
import (
"fmt"
"io"
"net/http"
"os"
"strconv"
)
func Get(url string) (result string, err error) {
resp, err1 := http.Get(url)
if err != nil {
err = err1
return
}
defer resp.Body.Close()
//讀取網頁內容
buf := make([]byte, 4*1024)
for true {
n, err := resp.Body.Read(buf)
if err != nil {
if err == io.EOF {
fmt.Println("完成")
break
} else {
fmt.Println("resp.Body.Read err = ", err)
break
}
}
result += string(buf[:n])
}
return
}
//將所有的網頁內容爬取下來
func SpiderPage(i int, page chan<- int) {
url := "https://github.com/search?q=go&type=Repositories&p=1" + strconv.Itoa((i-1)*50)
fmt.Printf("正在爬取第%d個網頁\n", i)
result, err := Get(url)
if err != nil {
fmt.Println("http.Get err = ", err)
return
}
//把內容寫入文件
filename := "page"+strconv.Itoa(i) + ".html"
f, err1 := os.Create(filename)
if err1 != nil {
fmt.Println("os.Create err = ", err1)
return
}
//寫內容
f.WriteString(result)
//關閉文件
f.Close()
//每爬完一個,就給個值
page <- i
}
func Run(start, end int) {
fmt.Printf("正在爬取第%d頁到%d頁\n", start, end)
//因為很有可能爬蟲還沒結束下面的循環就已經結束了,所以這裡就需要且到通道
page := make(chan int)
for i := start; i <= end; i++ {
//將page阻塞
go SpiderPage(i, page)
}
for i := start; i <= end; i++ {
//這裡直接將面碼傳給點位符,數值直接從管道取出
fmt.Printf("第%d個頁面爬取完成\n", <-page)
}
}
func main() {
var start, end int
fmt.Printf("請輸入起始頁數字>=1:>")
fmt.Scan(&start)
fmt.Printf("請輸入結束頁數字:>")
fmt.Scan(&end)
Run(start, end)
}
[Go]網頁爬蟲
留言
留言分享你的想法!
小黑與程式的邂逅
8會員
123內容數
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
小黑與程式的邂逅的其他內容
2024/06/05
GOB
Go官方有提供net/rpc的RPC套件。此套件提供GOB的編/解碼,且支援TCP或HTTP傳輸方式。它可以在伺服器端註冊多個不同類型物件。
遠端存取的要求條件
方法的類型可輸出
方法的本體可輸出
方法必須要有兩個參數是輸出或內建
方法的第二個參數是指標型
方法的返回類型為

2024/06/05
GOB
Go官方有提供net/rpc的RPC套件。此套件提供GOB的編/解碼,且支援TCP或HTTP傳輸方式。它可以在伺服器端註冊多個不同類型物件。
遠端存取的要求條件
方法的類型可輸出
方法的本體可輸出
方法必須要有兩個參數是輸出或內建
方法的第二個參數是指標型
方法的返回類型為

2024/06/04
支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。
映射關係
table->struct
record->object
field->attribute
安裝
go get github.com/astaxie/beego/orm
go get github.com

2024/06/04
支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。
映射關係
table->struct
record->object
field->attribute
安裝
go get github.com/astaxie/beego/orm
go get github.com

2024/06/03
Gorm是一款性能極好的ORM,且友善,因此可以明顯的提高開發效率。
特點
全功能ORM
支持連結
支援Hook
支持預先載入
支援交易
支持復合主鍵
支持SQL生成器
支援資料庫自動遷移
支援自訂日誌
可擴充性
所有功能都被測試覆蓋
安裝
go get -u gor

2024/06/03
Gorm是一款性能極好的ORM,且友善,因此可以明顯的提高開發效率。
特點
全功能ORM
支持連結
支援Hook
支持預先載入
支援交易
支持復合主鍵
支持SQL生成器
支援資料庫自動遷移
支援自訂日誌
可擴充性
所有功能都被測試覆蓋
安裝
go get -u gor

你可能也想看










Sunkronizo 的 Playful Heart 是一款帶著明亮果香與柔和木質調的甜感香水,特別適合星期四使用。前調活潑、尾韻沉靜,陪你從忙碌過渡到週末的輕鬆心情。適合喜歡果香、花果香調的女性,也很適合作為溫暖又有個性的送禮選擇。可於官網、Pinkoi 選購,11 月底起於臺中國家歌劇院寄售。

Sunkronizo 的 Playful Heart 是一款帶著明亮果香與柔和木質調的甜感香水,特別適合星期四使用。前調活潑、尾韻沉靜,陪你從忙碌過渡到週末的輕鬆心情。適合喜歡果香、花果香調的女性,也很適合作為溫暖又有個性的送禮選擇。可於官網、Pinkoi 選購,11 月底起於臺中國家歌劇院寄售。

根據美國電影協會(MPA)主辦的「串流服務如何推動臺灣創意經濟」論壇內容,深入探討串流平臺對臺灣影視產業的影響、數據分析、政府政策建議、內容國際化策略,以及臺灣與「韓流」的差距。文章提出 awwrated 在串流生態系中的潛在角色,強調數據、策略與自信是臺灣影視產業發展的關鍵。

根據美國電影協會(MPA)主辦的「串流服務如何推動臺灣創意經濟」論壇內容,深入探討串流平臺對臺灣影視產業的影響、數據分析、政府政策建議、內容國際化策略,以及臺灣與「韓流」的差距。文章提出 awwrated 在串流生態系中的潛在角色,強調數據、策略與自信是臺灣影視產業發展的關鍵。

當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端

當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
JavaScript 套件,頁碼 Pagination.js 搭配 axios API 請求範例
JavaScript 套件,頁碼 Pagination.js 搭配 axios API 請求範例
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!






