1

我有很多使用Scrapy的经验,但是或者在这个项目中我应该使用colly的一些原因。我正在尝试从网站上抓取数据,但它返回要重新获得访问权限,请确保在重新加载页面之前启用 cookie 和 JavaScript。

我的代码部分如下:

func crawl(search savedSearch) {
    c := colly.NewCollector()
    extensions.RandomUserAgent(c)
    /* for debugging to see what is the result
    c.OnHTML("*", func(e *colly.HTMLElement) {
        fmt.Println(e.Text)
        os.Exit(1)
    })*/
    c.OnHTML(".result-list__listing", func(e *colly.HTMLElement) {
        listingId, _ := strconv.Atoi(e.Attr("data-id"))
        if !listingExist(search.id, listingId) {
            fmt.Println("Listing found " + strconv.Itoa(listingId))
            saveListing(search.id, listingId)
            notifyUser(search.user, listingId)
        }else{
            fmt.Println("item is already crawled")
        }
    })

我在文档“自动 cookie 和会话处理”中看到,所以可能是 js 的问题,我该如何克服这个问题?首先,尝试一下如何在 colly 中启用 js?

4

1 回答 1

1

Colly 是 HTML 页面的最佳选择。如果您需要抓取 JS 驱动的页面,则需要使用不同的策略。浏览器有一个共同的协议来处理 JS,它们有不同的库用于不同的语言,包括 Go。

于 2021-02-19T09:15:55.843 回答