Golang 網路爬蟲框架gocolly/colly
是 Golang 實現的網路爬蟲框架,名列 go 版爬蟲程式榜首。
安裝
go get -u github.com/gocolly/colly/...
例子
import ( "fmt" "github.com/gocolly/colly")func main() { c := colly.NewCollector() c.OnResponse(func(r *colly.Response) { fmt.Println("IP:", string(r.Body)) }) //c.SetProxy(") c.Visit(")}
SetProxy 函式可以用來配置 HTTP 代理。
colly 的主體是 Collector 物件,管理網路通訊和負責在作業執行時執行附加的回掉函式。使用 colly 需要先初始化 Collector :
c := colly.NewCollector()
vgo
vgo 是 Go 語言推出的第三方庫管理工具,在 Go 語言新版本中使用。
常用的命令列:
· go help mod 檢視幫助。
· go mod init < 專案模組名稱 > 初始化模組,會在專案根目錄下生成 go.mod 檔案,是可以自己手動編輯的。
依賴包大多在 Github 上,安裝依賴可能會出現連線超時等問題,可以配置全域性 git 代理:
git config --global http.proxy config --global https.proxy 取消代理: git config --global --unset http.proxygit config --global --unset https.proxy
cmd 走 shadowsocks 代理:
set http_proxy=127.0.0.1:1080set https_proxy=127.0.0.1:1080curl cip.ccIP : 140.206.97.42 地址 : 中國 上海資料二 : 上海市 | 聯通 URL :
Linux 使用 export 設定環境變數,程式碼同上。
回掉函式的呼叫順序
1. OnRequest 在發起請求前被呼叫。
2. OnError 請求過程中如果發生錯誤被呼叫。
3. OnResponse 收到回覆後被呼叫。
4. OnHTML 在 OnResponse 之後被呼叫,如果收到的內容是 HTML 。
5. OnScraped 在 OnHTML 之後被呼叫。
官方提供的 程式碼:
package mainimport ( "fmt" "github.com/gocolly/colly")func main() { // Instantiate default collector c := colly.NewCollector( // Visit only domains: hackerspaces.org, wiki.hackerspaces.org colly.AllowedDomains("hackerspaces.org", "wiki.hackerspaces.org"), ) // On every a element which has href attribute call callback c.OnHTML("a[href]", func(e *colly.HTMLElement) { link := e.Attr("href") // Print link fmt.Printf("Link found: %q -> %s\n", e.Text, link) // Visit link found on page // Only those links are visited which are in AllowedDomains c.Visit(e.Request.AbsoluteURL(link)) }) // Before making a request print "Visiting ..." c.OnRequest(func(r *colly.Request) { fmt.Println("Visiting", r.URL.String()) }) // Start scraping on c.Visit(")}
該例項程式僅訪問 hackerspaces.org 域內的連結, OnHTML 回掉函式的選擇器為 a[href] ,選擇頁面內具有 href 屬性的 a 型別元素,找到連結後繼續抓取。 執行的部分結果如下:
Visiting found: "navigation" -> #column-oneLink found: "search" -> #searchInputLink found: "" -> /File:Cbase07.jpgVisiting found: "navigation" -> #column-oneLink found: "search" -> #searchInputLink found: "File" -> #fileLink found: "File history" -> #filehistoryLink found: "File usage" -> #filelinksLink found: "" -> /images/e/ec/Cbase07.jpgVisiting https://hackerspaces.org/images/e/ec/Cbase07.jpgLink found: "800 × 600 pixels" -> /images/thumb/e/ec/Cbase07.jpg/800px-Cbase07.jpgVisiting https://hackerspaces.org/images/thumb/e/ec/Cbase07.jpg/800px-Cbase07.jpg
本文轉載自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555707/viewspace-2558361/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用Golang寫爬蟲(六) - 使用collyGolang爬蟲
- 爬蟲(9) - Scrapy框架(1) | Scrapy 非同步網路爬蟲框架爬蟲框架非同步
- python網路爬蟲(14)使用Scrapy搭建爬蟲框架Python爬蟲框架
- 網路爬蟲開發常用框架爬蟲框架
- Golang框架beego電影網爬蟲小試牛刀Golang框架爬蟲
- 關於爬蟲工具 colly 的問題爬蟲
- .NET使用分散式網路爬蟲框架DotnetSpider快速開發爬蟲功能分散式爬蟲框架IDE
- 網路爬蟲爬蟲
- 網路爬蟲——爬蟲實戰(一)爬蟲
- 手把手教你寫網路爬蟲(3):開源爬蟲框架對比爬蟲框架
- 網路爬蟲示例爬蟲
- 網路爬蟲精要爬蟲
- Golang福利爬蟲Golang爬蟲
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- python網路爬蟲應用_python網路爬蟲應用實戰Python爬蟲
- 網路爬蟲的原理爬蟲
- python DHT網路爬蟲Python爬蟲
- 網路爬蟲專案爬蟲
- [Python] 網路爬蟲與資訊提取(1) 網路爬蟲之規則Python爬蟲
- 什麼是Python網路爬蟲?常見的網路爬蟲有哪些?Python爬蟲
- python網路爬蟲(9)構建基礎爬蟲思路Python爬蟲
- 網路爬蟲(python專案)爬蟲Python
- 什麼是網路爬蟲爬蟲
- 網路爬蟲大型教程(二)爬蟲
- 專案--python網路爬蟲Python爬蟲
- 網路爬蟲流程總結爬蟲
- 網路爬蟲如何運作?爬蟲
- python網路爬蟲合法嗎Python爬蟲
- 網路爬蟲的反扒策略爬蟲
- 什麼是網路爬蟲?爬蟲
- 網路爬蟲是什麼?爬蟲
- Python網路爬蟲實戰Python爬蟲
- Scrapy爬蟲框架爬蟲框架
- SWCJ爬蟲框架爬蟲框架
- [網路爬蟲] 網路爬蟲實踐:大麥網演唱會預約搶票 【待續】爬蟲
- 精通Scrapy網路爬蟲【一】第一個爬蟲專案爬蟲
- python3網路爬蟲開發實戰_Python 3開發網路爬蟲(一)Python爬蟲
- 精通 Python 網路爬蟲:核心技術、框架與專案實戰Python爬蟲框架