Colly 實戰(zhàn):3 分鐘爬取 Shopify 整站 URL

2025-07-14 18:29 更新

官方示例只有 20 行?把它拆成 中文注釋 + 擴(kuò)展模板,讓你 3 分鐘 不僅拿下 Shopify,還能一鍵爬任意站點(diǎn)的 sitemap.xml

一、整體思路(先背下來)

  1. 目標(biāo)文件/sitemap.xml(或 /sitemap-*.xml
  2. XPath 定位//urlset/url/loc 取出所有 <loc> 標(biāo)簽
  3. 結(jié)果:整站 URL 列表,可用于 SEO 分析 / 全站爬取

二、精簡中文代碼(15 行)

package main


import (
    "fmt"
    "os"


    "github.com/gocolly/colly/v2"
)


func main() {
    if len(os.Args) != 2 {
        fmt.Println("用法: go run main.go <域名>")
        return
    }
    domain := os.Args[1] // 例如 shopify.com


    var urls []string


    // 1. 創(chuàng)建收集器,僅允許目標(biāo)域名
    c := colly.NewCollector(
        colly.AllowedDomains(domain, "www."+domain),
    )


    // 2. 用 XPath 解析 <loc> 標(biāo)簽
    c.OnXML("http://urlset/url/loc", func(e *colly.XMLElement) {
        urls = append(urls, e.Text)
    })


    // 3. 開始抓取 sitemap.xml
    c.Visit("https://www." + domain + "/sitemap.xml")


    // 4. 輸出統(tǒng)計
    fmt.Printf("? 共抓取 %d 條 URL\n", len(urls))
    for _, u := range urls {
        fmt.Println(u)
    }
}

三、3 步跑通

步驟 命令/操作 說明
① 安裝依賴 go mod init sitemap && go get github.com/gocolly/colly/v2 一鍵拉庫
② 保存文件 復(fù)制上方代碼 → main.go 零配置
③ 一鍵運(yùn)行 go run main.go shopify 輸出 Shopify 全站 URL

四、結(jié)果示例

? 共抓取 312 條 URL
https://www.shopify.com/
https://www.shopify.com/blog
https://www.shopify.com/pricing
...

五、1 分鐘擴(kuò)展模板

需求 改動 1 行
爬索引 sitemap 把 Visit 換成 https://www.xxx.com/sitemap_index.xml
同時抓多張 sitemap 用 c.OnXML("http://sitemap/loc", ...) 遞歸
保存 CSV 把 fmt.Println 換成 csv.Writer

六、常見問題速查

癥狀 原因 解決
0 條 URL 域名無 sitemap 先訪問 /robots.txt 找真實 sitemap 路徑
403 被攔截 缺 User-Agent 加 colly.UserAgent("...")
XPath 匹配不到 結(jié)構(gòu)變化 用瀏覽器 F12 → Copy → XPath 重新定位

七、1 分鐘實戰(zhàn):一鍵爬任意站點(diǎn)

  1. 打開 終端 → 新建 sitemap.go
  2. 復(fù)制上方代碼 → 把 domain 換成你的目標(biāo)站
  3. 運(yùn)行:go run sitemap.go yourdomain.com
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號