Разбор изображения или аудио в HTML-таблице в C # - PullRequest
0 голосов
/ 11 июля 2019

хочу разобрать HTML. Я использовал Html Agility Pack

Ссылка хорошая: Разбор HTML-таблицы в C # но я хочу дать изображение или аудио или ссылку на страницу.

Если такой код, как анализировать ссылку на изображение или аудио ссылку или ссылку на страницу?

<tr>
<td align="center"><b><a href="/wiki/UIC_751-3" title="UIC 751-3">UIC 751-3</a></b></td>
    <td>UIC 751-3 Signal</td>
    <td>457&nbsp;<span class="mw-lingo-tooltip " data-hasqtip="true"><span class="mw-lingo-tooltip-abbr">MHz</span></span> — 468&nbsp;<span class="mw-lingo-tooltip " data-hasqtip="true"><span class="mw-lingo-tooltip-abbr">MHz</span></span></td>
    <td><span class="mw-lingo-tooltip " data-hasqtip="true"><span class="mw-lingo-tooltip-abbr">NFM</span></span></td>
    <td><span class="mw-lingo-tooltip " data-hasqtip="true"><span class="mw-lingo-tooltip-abbr">FSK</span></span></td>
    <td>10&nbsp;<span class="mw-lingo-tooltip " data-hasqtip="true"><span class="mw-lingo-tooltip-abbr">kHz</span></span></td>
    <td>Spain</td>
    <td><audio src="/images/d/db/SDRSharp_20180321_181217Z_447650000Hz_AF.mp3" controls="" preload="none"></audio></td>
    <td><a href="/wiki/File:UIC_751-3.png" class="image"><img alt="UIC 751-3.png" src="/images/thumb/a/a2/UIC_751-3.png/150px-UIC_751-3.png" srcset="/images/thumb/a/a2/UIC_751-3.png/225px-UIC_751-3.png 1.5x, /images/thumb/a/a2/UIC_751-3.png/300px-UIC_751-3.png 2x" width="150" height="232"></a></td>
</tr>
WebClient webClient = new WebClient();
string page = webClient.DownloadString("my web page link");

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(page);

List<List<string>> table = doc.DocumentNode.SelectNodes("//table[@class='wikitable']")
    .Descendants("tr")
    .Skip(2)
    .Where(tr => tr.Elements("td").Count() > 1)
    .Select(tr => tr.Elements("td").Select(td => td.InnerText.Trim()).ToList())
    .ToList();

Результат примерно такой:

enter image description here

1 Ответ

0 голосов
/ 11 июля 2019

Я столкнулся с подобной проблемой самостоятельно 2 дня назад ( это вопрос, который я написал тогда ), и в итоге использовал Regular Expression для извлечения необходимых данных.Я бы порекомендовал вам взглянуть на Regex, хотя не рекомендуется анализировать HTML с Regex.Я добавлю измененные версии Regex, которые я получил как ответ на мой вопрос как можно скорее.

О, и вам нужно загрузить HTML-контент, если вы этого еще не сделали.


Для вашей ссылки: (ссылка будет вашей строкой HTML-тегов, я не проверял ее на всех ваших тегах, но она должна работать)

string link = "";
string patternHref = "href=\"(?:[^\"]*)\"";
string patternSrc = "src=\"(?:[^\"]*)\"";
var matches = Regex.Matches(link, patternSrc, RegexOptions.IgnoreCase);

    foreach(Match ma in matches)
    {
        var matches2 = Regex.Matches(ma.Value, "(?! src=\")[^\"]*[^\"]*", RegexOptions.IgnoreCase);
        foreach (Match ma2 in matches2)
        {
            if(!ma2.Value.Contains("src=") && !ma2.Value.Contains("href=") && !string.IsNullOrWhiteSpace(ma2.Value))
                Console.WriteLine(ma2.Value); //assign value to variable here 
        }
    }

Я знаю, что мойРешение не самое лучшее, но оно работало в каждом тесте, который я проводил.Не цитируйте меня об этом, я начал изучать Regex всего несколько дней назад.

...