Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Go中加入URL?_Go_Web Scraping_Web Crawler - Fatal编程技术网

如何在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

我正在GO中创建一个网络爬虫。在解析和抓取页面上的所有URL后,我会得到不同格式的超链接:

  • /我的/下一页/第页
  • 我的/下一页/第页
  • //我的下一页

如您所见,这里有许多组合,在某些情况下,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。