go - Colly 找不到任何链接

标签 go web-scraping

我之前以基本相同的方式(只是不同的域)完成了几个类似的程序,但是这次,colly 没有找到一个链接,而是在访问第一页后退出。谁能看出哪里出了问题? *注意:为了清楚地说明手头的主题,我省略了程序的某些部分。

*编辑:我找到了问题,但没有找到解决方案。运行 curl https://trendmicro.com/vinfo/us/security/research-and-analysis/threat-reports 在终端中返回 301 永久移动错误,但连接到浏览器获取我想要的页面。为什么会发生这种情况,我该如何解决?

*EDIT2:我发现执行命令 curl -L 会使 curl 跟随重定向 - 然后吐出我需要的网页。但是,我如何将其翻译成 colly?因为 colly 还在捡 301 错误。

import (
    "fmt"
    "strings"
    "github.com/gocolly/colly"
)

func main() {
    /* only navigate to links within these paths */
    tld1 := "/vinfo/us/security/research-and-analysis/threat-reports"

    c := colly.NewCollector(
        colly.AllowedDomains("trendmicro.com", "documents.trendmicro.com"),
    )

    c.OnHTML("a[href]", func(e *colly.HTMLElement) {
        link := e.Attr("href")
        fmt.Printf("Link found: %q -> %s\n", e.Text, link)
        if strings.Contains(link, tld1) {
            c.Visit(e.Request.AbsoluteURL(link))
        }
    })

    c.OnRequest(func(r * colly.Request) {
        fmt.Println("Visiting", r.URL.String())
    })

    c.Visit("https://trendmicro.com/vinfo/us/security/research-and-analysis/threat-reports")
}

最佳答案

我找到了解决方案。我插入了我的链接 https://trendmicro.com/vinfo/us/security/research-and-analysis/threat-reports进入https://wheregoes.com/retracer.php找到 301 重定向到的位置,却发现它在 www.到链接的开头。添加 www.到初始 c.Visit 字符串的开头和 c.AllowedDomains 部分就像一个魅力

关于go - Colly 找不到任何链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54696728/

相关文章:

javascript - 如何在 puppeteer 中执行 __doPostBack 函数?

web-scraping - 进入每个链接,找到文件类型并下载

dictionary - 我可以有检查键是否在 map 中的功能吗?

json - 在 Golang 中将 TXT 文件转换为 Json

amazon-web-services - 使用 s3 上传多个文件

javascript - 使用转换后的 JS 函数在 Python 中进行反混淆

go - 是否有可能找出导致io.Copy失败的原因?

go - 在Go应用程序中使用默认凭据时出现GCP权限问题

r - 使用 R 从网页中提取链接

web-scraping - 制表符分隔的 csv 而不是在 scrapy 中分隔的逗号