我正在 golang 中構建一個網絡爬蟲應用程序。下載頁面的 HTML 后,我將 URL 分離出來。我看到的 URL 中含有“#s”,例如“en.wikipedia.org/wiki/Race_condition#Computing”。我想刪除“#”后面的所有字符,因為這些字符無論如何都會指向同一頁面。對于如何做到這一點有什么建議嗎?
2 回答

冉冉說
TA貢獻1877條經驗 獲得超1個贊
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]
}
- 2 回答
- 0 關注
- 148 瀏覽
添加回答
舉報
0/150
提交
取消