我正在尝试爬网,在少数情况下我的 HTML 看起来像这样并包含\n
& \t
。
<article>
<div></div>
<p>
<br/>\n</p>\n\t
<p><span></span></p>
</article>
在某些情况下,我将如何删除标签,\n
或者\t
我也需要删除它。
- 剥离所有 \n 以便该标签变为空。
- 如果它是空的,它的父级也将是空的,这也需要递归地剥离。
我不知道这是不是你想要的。
re, _ := regexp.Compile("(<.*?>|\n|\t|\\\\n|\\\\t)")
rep := re.ReplaceAllString(`<article>
<div></div>
<p>
<br/>\n</p>\n\t
<p><span></span></p>
</article>`, "")
fmt.Println(rep)
或者,以下代码仅删除空标签。
func RemoveTags(html string) string {
re, _ := regexp.Compile("<[^>/]+></[^>]+>")
rep := re.ReplaceAllString(html, "")
if rep != html {
return RemoveTags(rep)
}
return rep
}
re, _ := regexp.Compile("(\n|\t|\\\\n|\\\\t|<[^/>]+/>)")
rep := re.ReplaceAllString(`<article>123
<div></div>
<p>
<br/>\n</p>\n\t
<p><span></span></p>
</article>`, "")
fmt.Println(RemoveTags(rep))
结果:
<article>123</article>