W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
爬蟲任務(wù)太大怕失控?用 Colly 的
MaxDepth
限制爬取深度,就像給爬蟲裝上“緊箍咒”,輕松精準(zhǔn)控制范圍。
package main
import (
"fmt"
"github.com/gocolly/colly/v2"
)
func main() {
// 創(chuàng)建默認(rèn)收集器,限制最大深度為 2
c := colly.NewCollector(
colly.MaxDepth(2), // 只爬取首頁 + 一層鏈接
)
// 每次發(fā)現(xiàn) <a href="..."> 標(biāo)簽就打印并繼續(xù)訪問
c.OnHTML("a[href]", func(e *colly.HTMLElement) {
link := e.Attr("href")
fmt.Println("發(fā)現(xiàn)鏈接:", link)
// 自動(dòng)補(bǔ)全絕對(duì)路徑后再訪問
absoluteURL := e.Request.AbsoluteURL(link)
e.Request.Visit(absoluteURL)
})
// 從編程獅首頁開始
c.Visit("http://m.o2fo.com/")
}
運(yùn)行結(jié)果(只爬取兩層):
發(fā)現(xiàn)鏈接: http://m.o2fo.com/go
發(fā)現(xiàn)鏈接: http://m.o2fo.com/python
...
關(guān)鍵點(diǎn) | 說明 | 示例代碼 |
---|---|---|
設(shè)置深度 | 通過 colly.MaxDepth(n) 設(shè)置最大爬取深度 |
colly.MaxDepth(2) |
深度含義 | 0 表示只爬首頁,1 表示爬首頁 + 一層鏈接,依此類推 | colly.MaxDepth(0) 只爬首頁 |
動(dòng)態(tài)調(diào)整 | 可以在運(yùn)行時(shí)動(dòng)態(tài)調(diào)整深度 | c.MaxDepth = 3 |
假設(shè)你想爬取編程獅首頁及其兩層鏈接,完整代碼如下:
package main
import (
"fmt"
"github.com/gocolly/colly/v2"
)
func main() {
// 創(chuàng)建默認(rèn)收集器,限制最大深度為 2
c := colly.NewCollector(
colly.MaxDepth(2), // 只爬取首頁 + 一層鏈接
)
// 每次發(fā)現(xiàn) <a href="..."> 標(biāo)簽就打印并繼續(xù)訪問
c.OnHTML("a[href]", func(e *colly.HTMLElement) {
link := e.Attr("href")
fmt.Println("發(fā)現(xiàn)鏈接:", link)
// 自動(dòng)補(bǔ)全絕對(duì)路徑后再訪問
absoluteURL := e.Request.AbsoluteURL(link)
e.Request.Visit(absoluteURL)
})
// 從編程獅首頁開始
c.Visit("http://m.o2fo.com/")
}
現(xiàn)象 | 原因 | 解決方法 |
---|---|---|
爬取深度不夠 | MaxDepth 設(shè)置太小 |
增大 MaxDepth 值 |
爬取深度太深 | MaxDepth 設(shè)置太大 |
減小 MaxDepth 值 |
無法訪問某些鏈接 | 鏈接不在 AllowedDomains 中 |
檢查 AllowedDomains 是否包含目標(biāo)域名 |
main.go
。
標(biāo)題:Colly 爬取深度限制:精準(zhǔn)控制爬蟲范圍(小白適配版)| 編程獅教程
描述:
關(guān)鍵詞:Colly 爬取深度、MaxDepth、爬蟲范圍控制、編程獅
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: