我已经构建了一个网络爬虫,它会在网站上搜索该页面上的所有链接,然后获取这些链接并在它们上搜索更多链接,直到整个页面被爬取为止。工作完美,直到我遇到一个特殊的网站。
他们的链接问题:
正常情况 1:绝对路径,如“ http://www.example.com/test ”
正常情况 2:相对路径,如 '/test'
有问题的新案例:没有 http:// 的绝对路径 - 只是“www.example.com”
显示问题的示例代码:
package main
import (
"fmt"
"log"
"net/url"
)
func main() {
u, err := url.Parse("http://www.example.com")
if err != nil {
log.Fatal(err)
}
base, err := url.Parse("http://example.com/directory/")
if err != nil {
log.Fatal(err)
}
u2, err := url.Parse("www.example.com")
if err != nil {
log.Fatal(err)
}
base2, err := url.Parse("http://example.com/directory/")
if err != nil {
log.Fatal(err)
}
fmt.Println(base.ResolveReference(u))
fmt.Println(base2.ResolveReference(u2))
}
http://www.example.com
http://example.com/test/www.example.com
正如您所看到的,第二行返回了错误的 URL,因为如果 http:// 丢失,则绝对 URL 的测试为 u.IsAbs() = false ...
任何想法如何解决这个问题?我必须每天测试 100.000 - 1.000.000 个链接,也许更多,并且需要高性能。
慕婉清6462132
相关分类