我正在用golang构建一个网络爬虫应用程序。
下载页面的HTML后,我分离出URL。我看到的URL中包含"#s“,例如"en.wikipedia.org/wiki/Race_condition#Computing".我想去掉"#“后面的所有字符,因为这些字符无论如何都会指向同一个页面。对如何做到这一点有什么建议吗?
发布于 2019-10-29 07:37:46
对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]
}发布于 2019-10-29 06:10:10
使用url包:
u, _ := url.Parse("SOME_URL_HERE")
u.Fragment = ""
return u.String()https://stackoverflow.com/questions/58599012
复制相似问题