我正试着用Go和Colly来搜索Zillow上一些列表的一些细节。下面是我正在使用的脚本:
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也是空的。
知道为什么会发生这样的事情吗?如何解决?
发布于 2022-05-24 04:06:29
你应该先读柯利的例子。贝娄是一个演示例子。只有在使用c.Visit时,colly才会启动请求并获取用于解析的数据。
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
}https://stackoverflow.com/questions/72356758
复制相似问题