Найти ссылку с несколькими ключевыми словами в c # с HTML Agility Pack

lucky_dandu спросил: 28 апреля 2018 в 08:58 в: c#

Я пишу программу, которая анализирует веб-сайт.

Мне удается найти ссылку на веб-сайте, но мне нужно было передать точные слова Innertext, чтобы найти ее.

Я ищу способ сделать то же самое, но найти его с помощью частичного внутреннего текста

example:

  • innertext: "Привет, мое имя"

Я хочу найти его, помещая только

  • "привет мой"

        foreach (var title in htmlNodes)
        {
            if (keywords == title.SelectSingleNode("div/h1").InnerText)
            {
                if (color == title.SelectSingleNode("div/p").InnerText)
                {
                    Console.WriteLine(title.SelectSingleNode("div/p/a").GetAttributeValue("href", "pas d'addresse"));
                }
            }
        }
    

Здесь ключевые слова должны соответствовать точному внутреннему тексту в div / h1. Я хочу, чтобы это было частичным.

вот код html:

<article>
    <div class="inner-article">
        <a style = "height:150px;" href="/shop/shirts/c712g63kx/p1us9bkh7">
            <img width = "150" height="150" src="//assets.supremenewyork.com/146319/vi/qW2Nur88W30.jpg" alt="Qw2nur88w30">
        </a>
        <h1>
            <a class="name-link" href="/shop/shirts/c712g63kx/p1us9bkh7">Tiger Stripe Rayon Shirt</a>
        </h1>
        <p>
             <a class="name-link" href="/shop/shirts/c712g63kx/p1us9bkh7">Teal</a>
        </p>
    </div>
</article>

благодарим всех вас за ваши ответы!


1 ответ

lucky_dandu ответил: 28 апреля 2018 в 10:43

Я узнал, как решить мою проблему. Это было довольно просто. вот код:

if ((title.SelectSingleNode("div/h1").InnerText).Contains(keywords))

Теперь проблема заключается в том, чтобы делать это с учетом регистра.

Marco ответил: 28 апреля 2018 в 10:51
Если вы хотите нечувствительность к регистру, используйте .ToUpper() или .ToLower() как для ваших ключевых слов, так и для внутреннего текста.
lucky_dandu ответил: 28 апреля 2018 в 11:05
да, но он не оптимизирован. toupper / tolower создает экземпляр. Я пытаюсь понять, как я могу использовать OrdinalIgnoreCase, но я не понимаю примеры msdn ...