0

我正在尝试爬网,在少数情况下我的 HTML 看起来像这样并包含\n& \t


<article>
    <div></div>
    <p>
        <br/>\n</p>\n\t
    <p><span></span></p>
</article>

在某些情况下,我将如何删除标签,\n或者\t我也需要删除它。

  1. 剥离所有 \n 以便该标签变为空。
  2. 如果它是空的,它的父级也将是空的,这也需要递归地剥离。
4

1 回答 1

0

我不知道这是不是你想要的。

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>
于 2020-04-21T02:59:05.057 回答