删除字符串中定界符之后的所有字符

我正在 golang 中构建一个网络爬虫应用程序。

下载页面的 HTML 后,我将 URL 分离出来。我看到的 URL 中含有“#s”,例如“en.wikipedia.org/wiki/Race_condition#Computing”。我想删除“#”后面的所有字符,因为这些字符无论如何都会指向同一页面。对于如何做到这一点有什么建议吗?


德玛西亚99
浏览 76回答 2
2回答

茅侃侃

使用该url包:u, _ := url.Parse("SOME_URL_HERE")u.Fragment = ""return u.String()

冉冉说

Luke Joshua Park 的答案的改进是解析相对于源页面 URL 的 URL。这会根据页面上可能的相对 URL(未指定方案、未指定主机、相对路径)创建绝对 URL。另一个改进是检查和处理错误。func clean(pageURL, linkURL string) (string, error) {&nbsp; &nbsp; p, err := url.Parse(pageURL)&nbsp; &nbsp; if err != nil {&nbsp; &nbsp; &nbsp; &nbsp; return "", err&nbsp; &nbsp; }&nbsp; &nbsp; l, err := p.Parse(linkURL)&nbsp; &nbsp; if err != nil {&nbsp; &nbsp; &nbsp; &nbsp; return "", err&nbsp; &nbsp; }&nbsp; &nbsp; l.Fragment = ""&nbsp; &nbsp;// chop off the fragment&nbsp; &nbsp; return l.String()}如果您对获取绝对 URL 不感兴趣,请砍掉 # 后面的所有内容。这是有效的,因为 URL 中 # 的唯一有效使用是片段分隔符。&nbsp;func clean(linkURL string) string {&nbsp; &nbsp; i := strings.LastIndexByte(linkURL, '#')&nbsp; &nbsp; if i < 0 {&nbsp; &nbsp; &nbsp; &nbsp; return linkURL&nbsp; &nbsp; }&nbsp; &nbsp; return linkURL[:i]&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP