Colly找不到任何链接

时间:2019-02-14 18:16:46

标签: go web-scraping

之前,我已经以基本相同的方式(只是在不同的域中)完成了一些这样的程序,但是这次,Colly找不到单个链接,只是在访问首页后退出。谁能看到什么问题? *注意:为清楚起见,我省略了程序的某些部分。

* EDIT:我找到了问题,但没有解决方案。运行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")
}

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我将链接https://trendmicro.com/vinfo/us/security/research-and-analysis/threat-reports插入了https://wheregoes.com/retracer.php中,以查找301重定向到的位置,但发现它前面加了一个www。到链接的开头。添加www。到初始c.Visit字符串的开头以及c.AllowedDomains部分的操作都像一个超级魅力