首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Go中刮取网站时没有回复

在Go中刮取网站时没有回复
EN

Stack Overflow用户
提问于 2022-05-24 03:00:32
回答 1查看 149关注 0票数 1

我正试着用Go和Colly来搜索Zillow上一些列表的一些细节。下面是我正在使用的脚本:

代码语言:javascript
复制
package main

import (
    "encoding/csv"
    "log"
    "os"
    "time"

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

func main() {
    // filename for data
    fName := "data.csv"
    // create a file
    file, err := os.Create(fName)
    // check for errors
    if err != nil {
        log.Fatalf("Could not create file, error : %q", err)
        return
    }
    // close file afterwards
    defer file.Close()

    // instantiate a csv writer
    writer := csv.NewWriter(file)
    // flush contents afterwards
    defer writer.Flush()

    // instantiate a collector
    c := colly.NewCollector(
        colly.AllowedDomains("https://www.zillow.com/austerlitz-ny/sold/"),
    )

    // point to the webpage structure you need to fetch
    c.OnHTML(".list-card-info", func(e *colly.HTMLElement) {
        // write the desired data into csv
        writer.Write([]string{
            e.ChildText("h1"),
            e.ChildText("a"),
        })
    })

    // show completion
    log.Printf("Scraping Finished\n")
    log.Println(c)
}

脚本运行时似乎没有错误,但也没有收集任何数据。终端将其记录为“发出的请求:0 (0响应)x回调: OnRequest: 0,OnHTML: 1,OnResponse: 0,OnError: 0”,data.csv也是空的。

知道为什么会发生这样的事情吗?如何解决?

EN

回答 1

Stack Overflow用户

发布于 2022-05-24 04:06:29

你应该先读柯利的例子。贝娄是一个演示例子。只有在使用c.Visit时,colly才会启动请求并获取用于解析的数据。

代码语言:javascript
复制
func main() {
    c := colly.NewCollector()

    // Find and visit all links
    c.OnHTML("a", func(e *colly.HTMLElement) {
        e.Request.Visit(e.Attr("href"))
    })

    c.OnRequest(func(r *colly.Request) {
        fmt.Println("Visiting", r.URL)
    })

    c.Visit("http://go-colly.org/") // start get data and the OnHTML start parse data get href
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72356758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档