Как использовать регулярные выражения, чтобы завершить элемент в HTML в C # правильно? - PullRequest
0 голосов
/ 01 февраля 2019

Я использовал WebClient в C #, чтобы получить HTML-документ видео с YouTube.Сейчас я пытаюсь получить комментарий Youtube из документа, но он не работает, потому что разные комментарии, использующие один и тот же элемент (yt-formatted-string), имеют разные атрибуты (class, id, span и т. Д.).Поэтому я пытаюсь получить регулярное выражение, чтобы завершить их для меня, и просто получить конечный тег (>).

Пытался использовать "."в регулярном выражении вроде как использовать модуль re в python: re.compile (r ('.')) в python, где он принимает пробелы, символы и символы и просто завершает их для меня.Не уверен, существует ли это даже в C #, но я надеюсь на это.

        WebClient web = new WebClient();
        String content = web.DownloadString(@"https://www.youtube.com/watch?v=hE73JvEc2pQ");

        MatchCollection matches = Regex.Matches(content, @"<yt-formatted-string\.>\s*(.+?)\s*</yt-formatted-string>", RegexOptions.Multiline);
        foreach (Match match in matches)
        {
            textComment.Text = $"\n{match.Groups[1].Value}";
        }

Ничего не получил.

Хотите, чтобы Regex заполнял для меня атрибуты, например:

Строка HTML:

yt-formatted-string id="content-text" slot="content" split-lines="" class="style-scope ytd-comment-renderer">

Воображаемый c точный код, который позволяет мне заполнять атрибуты:

"yt-formatted-string(complete all the attributes here)>\s*(.+?)\s*</yt-formatted-string>"

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

В тех случаях, когда API недоступен, вам также следует избегать попытки анализа html с помощью регулярного выражения, а вместо этого анализировать его как XML.См. https://stackoverflow.com/a/1732454/6055952 для получения дополнительной информации.

0 голосов
/ 01 февраля 2019

вам не нужно иметь дело с таким сложным анализом.Просто используйте API данных Youtube

Проверьте Этот API

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...