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

你可能也想看
















背景:從冷門配角到市場主線,算力與電力被重新定價
小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題

背景:從冷門配角到市場主線,算力與電力被重新定價
小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題

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

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

本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。

本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
JavaScript 套件,頁碼 Pagination.js 搭配 axios API 請求範例
JavaScript 套件,頁碼 Pagination.js 搭配 axios API 請求範例
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!

5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。

5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。

這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。

這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。

Accept:用戶端能夠接收的內容類型。
Accept: text/plain, text/html
Accept-Charset:瀏覽器可以接受的字元編碼集。
Accept-Charset: utf8
Accept-Encoding:指定瀏覽器可以支援的web伺服器返回內容壓縮編碼

Accept:用戶端能夠接收的內容類型。
Accept: text/plain, text/html
Accept-Charset:瀏覽器可以接受的字元編碼集。
Accept-Charset: utf8
Accept-Encoding:指定瀏覽器可以支援的web伺服器返回內容壓縮編碼










