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/")
}这是我的代码,当我请求时,我将获得备用页面This is the link for forbes that i am trying to scrape
我已经注意到网站使用散列路径,这是在网址的最后一部分,我不能请求与同一网址两次,我认为它在某种程度上与抓取有关,有人能帮我吗?
发布于 2021-11-01 05:23:11
如果您在浏览器中禁用javascript,请确保可用(您可以使用开发人员工具执行此操作)。大多数抓取器只能得到页面的文本表示,而浏览器也会对其运行javascript引擎。如果你试图抓取的数据是用Javascript填充的,那么很有可能这就是你不能抓取它的原因。
发布于 2021-11-01 13:56:04
Colly只能用于静态抓取,chromedp可以用于抓取客户端渲染的应用程序。
https://stackoverflow.com/questions/69792838
复制相似问题