HtmlAgilityPack анализирует веб-данные для выбора второго атрибута в Android C # - PullRequest
0 голосов
/ 21 мая 2018

Я анализирую веб-сайт, используя HtmlAgilityPack для Android в Xamarin.Я знаю, что есть первые () ключевые слова, но кто-нибудь знает, как я смогу получить доступ ко второму экземпляру HTML-текста?Например, я хотел бы видеть «Предсказания о прибытии», недоступные в настоящее время », как показано на картинке приложения.

Пример изображения приложения

void Btn_Click(object sender, System.EventArgs e)
{
    HtmlWeb hw = new HtmlWeb();
    //stores site in a document object of HTMLDocument class
    HtmlDocument document = hw.Load("https://broncoshuttle.com/simple/routes/3164/stops/36359");
    HtmlNodeCollection nodes = document.DocumentNode.SelectNodes("//ul//li[contains(.,'')] ");
    string result = "";
    foreach( var item in nodes)
    {
        result += item.InnerText;
    }

    MyTextView.Text = result;
}

1 Ответ

0 голосов
/ 21 мая 2018

Если бы у меня был контроль над HTML, я бы, вероятно, использовал бы класс HTML, такой как error-massage, чтобы сделать HTML-разметку более семантической и выполнять поиск с большей точностью.В настоящее время вы можете использовать простой HtmlNodeCollection индексатор или Enumerable.Skip() и Enumerable.Take() Методы расширения Linq:

// errpr-message HTML class and SelectSingleNode().
HtmlNode error = document.DocumentNode.SelectSingleNode(@"//*[contains(concat("" "", normalize-space(@class), "" ""), "" error-message "")]");
// HtmlNodeCollection indexer.
HtmlNode error = nodes[1];
// Linq.
HtmlNode error = nodes.Skip(1).Take(1).SingleOrDefault();

Для получения дополнительной информации проверьте:

...