W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
只想爬指定路徑?用正則表達(dá)式給爬蟲戴上“緊箍咒”,多余鏈接統(tǒng)統(tǒng)跳過!
只爬編程獅課程頻道,其他路徑一律忽略:
package main
import (
"fmt"
"regexp"
"github.com/gocolly/colly/v2"
)
func main() {
// 1. 創(chuàng)建收集器,只匹配課程相關(guān) URL
c := colly.NewCollector(
colly.URLFilters(
// 允許:首頁 或 /course 開頭
regexp.MustCompile(`https://www\.w3cschool\.cn/?$`),
regexp.MustCompile(`https://www\.w3cschool\.cn/course.*`),
),
)
// 2. 發(fā)現(xiàn)鏈接就打印并繼續(xù)訪問
c.OnHTML("a[href]", func(e *colly.HTMLElement) {
link := e.Attr("href")
fmt.Printf("發(fā)現(xiàn)課程鏈接:%q → %s\n", e.Text, link)
// 自動補全絕對路徑
c.Visit(e.Request.AbsoluteURL(link))
})
// 3. 打印訪問日志
c.OnRequest(func(r *colly.Request) {
fmt.Println("正在訪問:", r.URL.String())
})
// 4. 從課程首頁開始
c.Visit("http://m.o2fo.com/course")
}
步驟 | 操作 | 說明 |
---|---|---|
① 保存代碼 | 復(fù)制上方內(nèi)容 → 保存為 filter.go |
依賴已是最新版 |
② 運行 | go run filter.go |
終端只打印課程相關(guān)鏈接 |
③ 改正則 | 把 /course 換成 /blog |
立刻切換爬取范圍 |
需求 | 正則示例 |
---|---|
只抓 .html 頁面 |
regexp.MustCompile( .*.html$) |
排除 ?page= 翻頁 |
regexp.MustCompile( ^(?!.\?page=).) |
匹配數(shù)字 id | regexp.MustCompile( /course/\d+) |
癥狀 | 原因 | 解決 |
---|---|---|
一個都不爬 | 正則寫錯 | 用 在線正則工具 先驗證 |
漏爬子目錄 | 末尾少 .* |
加 .* 或 /.* |
報錯 panic | 正則語法錯誤 | regexp.MustCompile 里用反引號 `` ``` |
filter.go
。 Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: