我正在用golang构建一个Web爬虫应用程序。
下载页面的HTML之后,我将URL分开。 向我提供其中包含“#”的URL,例如“ en.wikipedia.org/wiki/Race_condition#Computing”。我想摆脱“#”之后的所有字符,因为它们总会导致相同的页面。有什么建议吗?
答案 0 :(得分:2)
使用url
软件包:
u, _ := url.Parse("SOME_URL_HERE")
u.Fragment = ""
return u.String()
答案 1 :(得分:2)
Luke Joshua Park对答案的改进是相对于源页面的URL解析URL。这将从页面上的相对URL创建绝对URL(未指定方案,未指定主机,相对路径)。另一个改进是检查和处理错误。
func clean(pageURL, linkURL string) (string, error) {
p, err := url.Parse(pageURL)
if err != nil {
return "", err
}
l, err := p.Parse(linkURL)
if err != nil {
return "", err
}
l.Fragment = "" // chop off the fragment
return l.String()
}
如果您不想获取绝对URL,请在#之后将所有内容都斩掉。之所以有效,是因为URL中唯一有效的#用法是片段分隔符。
func clean(linkURL string) string {
i := strings.LastIndexByte(linkURL, '#')
if i < 0 {
return linkURL
}
return linkURL[:i]
}