hiy*_*hiy 2 url go relative-url
我正在写一个小的网络爬虫,并且我正在爬虫的网站上的许多链接都是相对的(/robots.txt例如,它们是相对的)。如何将这些相对URL转换为绝对URL(因此/robots.txt=> http://google.com/robots.txt)?Go有内置的方法吗?
在@Not_a_Golfer 的解决方案之上。
您还可以使用baseURL 的Parse方法来提供相对或绝对 URL。
package main
import (
"fmt"
"log"
"net/url"
)
func main() {
// parse only base url
base, err := url.Parse("http://example.com/directory/")
if err != nil {
log.Fatal(err)
}
// and then use it to parse relative URLs
u, err := base.Parse("../../..//search?q=dotnet")
if err != nil {
log.Fatal(err)
}
fmt.Println(u.String())
}
Run Code Online (Sandbox Code Playgroud)
在Go Playground上尝试一下。
是的,标准库可以使用该net/url包来实现。示例(来自标准库):
package main
import (
"fmt"
"log"
"net/url"
)
func main() {
u, err := url.Parse("../../..//search?q=dotnet")
if err != nil {
log.Fatal(err)
}
base, err := url.Parse("http://example.com/directory/")
if err != nil {
log.Fatal(err)
}
fmt.Println(base.ResolveReference(u))
}
Run Code Online (Sandbox Code Playgroud)
请注意,您只需要解析一次绝对URL,然后就可以反复使用它。
| 归档时间: |
|
| 查看次数: |
462 次 |
| 最近记录: |