如何在Go中加入URL?
我正在GO中创建一个网络爬虫。在解析和抓取页面上的所有URL后,我会得到不同格式的超链接:如何在Go中加入URL?,go,web-scraping,web-crawler,Go,Web Scraping,Web Crawler,我正在GO中创建一个网络爬虫。在解析和抓取页面上的所有URL后,我会得到不同格式的超链接: /我的/下一页/第页 我的/下一页/第页 //我的下一页 如您所见,这里有许多组合,在某些情况下,URL是完全不同的域。URL的常规连接在这里不起作用。如何正确地连接URL,以便将每个结果URL连接再次输入爬虫程序,以便连续解析和刮取?由于超链接的不同,URL处理是不同的。如上所述,锚定标记中的超链接可以有多种格式。下面是处理请求的URL到爬网的连接和分别到该URL的超链接的解决方案 func jo
- /我的/下一页/第页
- 我的/下一页/第页
- //我的下一页
如您所见,这里有许多组合,在某些情况下,URL是完全不同的域。URL的常规连接在这里不起作用。如何正确地连接URL,以便将每个结果URL连接再次输入爬虫程序,以便连续解析和刮取?由于超链接的不同,URL处理是不同的。如上所述,锚定标记中的超链接可以有多种格式。下面是处理请求的URL到爬网的连接和分别到该URL的超链接的解决方案
func joinURLs(baseURL,超链接字符串)字符串{
解析,错误:=url.parse(超链接)
如果错误!=零{
返回“”
}
base,err:=url.Parse(baseURL)
如果错误!=零{
返回“”
}
nextURLToCrawl:=base.ResolveReference(解析)
return-nexturltograwl.String()
}
这个函数最好的地方是,它可以处理不同域上的函数,而不必维护主机名是否相同的检查。现在,您的代码更具声明性。请记住,在处理HTML时,传递给此函数的
baseURL
应该是head
中base
标记的href
属性的内容,如果没有base
,则是链接所在页面的URL。