我正在 GO 中创建一个网络爬虫。并经过解析和刮页面上的所有 URL,在某些情况下我会获得不同格式的超链接:
如您所见,这里有很多组合,在某些情况下,URL 是完全不同的域。 URL 的常规连接在这里不起作用。如何正确连接 URL,以便每个生成的 URL 连接都可以再次输入爬虫以持续解析和抓取?
最佳答案
由于超链接的不同,URL 的处理方式也不同。如上所述, anchor 标记中的超链接可以有多种格式。这是处理请求的 URL 与爬网的连接以及分别到该 URL 的超链接的解决方案。
func joinURLs(baseURL, hyperlink string) string {
parse, err := url.Parse(hyperlink)
if err != nil {
return ""
}
base, err := url.Parse(baseURL)
if err != nil {
return ""
}
nextURLToCrawl := base.ResolveReference(parse)
return nextURLToCrawl.String()
}
这个函数最好的地方是它可以处理不同域上的函数,而无需维护检查主机名是否相同。现在您的代码更具声明性。
关于go - 如何在 Go 中加入 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60993326/