You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Golang爬取特定网站卖家名称?解决CSV文件为空问题

问题分析与修复方案

核心问题1:AllowedDomains参数错误

colly.NewCollector里的colly.AllowedDomains接收的是纯域名,不能带https://前缀,你的代码里传了"https://www.olx.ro/",这会导致Colly直接拒绝访问目标页面,跳过解析逻辑,最终CSV文件为空。

核心问题2:CSS选择器失效

OLX的页面类名是动态生成的,你用的.css-1fp4ipz已经失效。当前目标页面的卖家名称(Ionut)所在的元素结构为:

  • 父元素类名为.css-1lcz6o7
  • 卖家名称在该元素下的h4.css-1wxaaza标签中

额外优化:错误捕获与反爬规避

  • 必须捕获writer.Write的错误,避免写入失败无提示
  • 添加User-Agent模拟浏览器请求,防止被OLX的反爬机制拦截

修改后的完整代码

package main

import (
    "encoding/csv"
    "fmt"
    "log"
    "os"
    "path/filepath"

    "github.com/gocolly/colly"
)

func main() {
    // 设置存储数据的文件路径
    fName := filepath.Join("D:\\", "go projects", "cwst go", "CWST-GO", "target folder", "index.csv")
    file, err := os.Create(fName)
    if err != nil {
        log.Fatalf("无法创建文件,错误:%q", err)
    }
    defer file.Close()

    // 初始化CSV写入器
    writer := csv.NewWriter(file)
    defer writer.Flush()

    // 初始化Colly收集器
    c := colly.NewCollector(
        colly.AllowedDomains("www.olx.ro"), // 修正:仅传入纯域名
    )

    // 设置User-Agent,模拟浏览器请求
    c.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"

    // HTML解析逻辑:定位卖家名称元素
    c.OnHTML(".css-1lcz6o7", func(e *colly.HTMLElement) {
        sellerName := e.ChildText("h4.css-1wxaaza")
        if sellerName != "" {
            // 捕获写入错误
            if err := writer.Write([]string{sellerName}); err != nil {
                log.Printf("写入CSV失败,错误:%q", err)
            }
            fmt.Printf("已获取卖家名称:%s\n", sellerName)
        } else {
            log.Println("未找到卖家名称元素")
        }
    })

    // 捕获请求错误
    c.OnError(func(_ *colly.Response, err error) {
        log.Printf("请求页面失败,错误:%q", err)
    })

    fmt.Println("开始爬取页面...")
    err = c.Visit("https://www.olx.ro/d/oferta/bmw-xdrixe-seria-7-2020-71000-tva-IDgp7iN.html")
    if err != nil {
        log.Fatalf("发起访问请求失败,错误:%q", err)
    }

    log.Println("\n爬取完成")
}

验证步骤

  1. 运行修改后的代码,检查CSV文件是否成功写入卖家名称
  2. 如果后续类名再次失效,打开目标页面的开发者工具(F12),重新定位卖家名称元素,更新对应的CSS选择器即可

内容的提问来源于stack exchange,提问作者DvdiidI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:36:19