GoLang WebCrawling удалить пустые теги - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь сканировать сеть, и в некоторых случаях мой HTML выглядит следующим образом: \n & \t.


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

Как мне удалить теги в некоторых случаях, которые у меня есть \n или \t Мне также нужно удалить это.

  1. Удаление всех \ n, чтобы тег стал пустым.
  2. Если он пуст, его родитель также будет пуст , который также должен быть рекурсивно вырезан.

1 Ответ

0 голосов
/ 21 апреля 2020

Не знаю, хотите ли вы этого.

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>
...