我不能用 colly go 抓取福布斯顶级亿万富翁网站

package main


import (

"encoding/csv"

"fmt"

"os"


"github.com/gocolly/colly"

)


 func checkError(err error){

 if err!=nil{

    panic(err)

}

}

func main(){

fName:="data.csv"

file,err:=os.Create(fName)

checkError(err)

defer file.Close()

writer:=csv.NewWriter(file)

defer writer.Flush()

c:=colly.NewCollector(colly.AllowedDomains("forbes.com","www.forbes.com"))

c.OnHTML(".scrolly-table tbody tr", func(e *colly.HTMLElement) {

        writer.Write([]string{

            e.ChildText(".rank .ng-binding"),

        })

    })  

    c.OnError(func(_ *colly.Response, err error) {

        fmt.Println("Something went wrong:", err)

    })

    c.OnRequest(func(r *colly.Request) {

        fmt.Println("Visiting", r.URL)

    })

    c.OnResponse(func(r *colly.Response) {

        fmt.Println("Visited", string(r.Body))

    })

    c.Visit("https://forbes.com/real-time-billionaires/")

     }

这是我的代码,当我请求我得到后备页面时,这是我试图抓取的福布斯链接


我注意到该网站使用的哈希路径位于 url 的最后一部分,我无法使用相同的 url 请求两次,我认为它与抓取有关,有人可以帮我吗?


牛魔王的故事
浏览 86回答 2
2回答

慕田峪7331174

如果您在浏览器中禁用 javascript,请确保可用的内容(您可以使用开发人员工具进行操作)。大多数抓取工具只会为您提供页面的文本表示,而浏览器也会针对它运行 javascript 引擎。如果您尝试抓取的数据是用 Javascript 填充的,那么很有可能这就是您无法抓取它的原因。

炎炎设计

Colly 只能用于静态抓取,chromedp 可以用于抓取客户端渲染的应用程序。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go