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 請求兩次,我認為它與抓取有某種關系,誰能幫我解決這個問題?
uj5u.com熱心網友回復:
如果您在瀏覽器中禁用 javascript,請確保可用的內容(您可以使用開發人員工具來完成)。大多數抓取工具只會為您提供頁面的文本表示,而瀏覽器也會針對它運行 javascript 引擎。如果您嘗試抓取的資料是用 Javascript 填充的,那么很有可能就是您無法抓取它的原因。
uj5u.com熱心網友回復:
Colly 只能用于靜態抓取,chromedp 可用于抓取客戶端渲染的應用程式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/347824.html
