HtmlAgilityPack URL-адрес поиска - PullRequest
0 голосов
/ 01 июня 2018

Я создаю WindownsFormApplication для группы друзей.Я использую HtmlAgilityPack для моего приложения.

Мне нужно найти все версии taco addon, например:

<li><a href='https://www.dropbox.com/s/nks140nf794tx77/GW2TacO_034r.zip?dl=0'>Download Build 034.1866r</a></li> 

Кроме того, мне нужно проверить последнюю версию для загрузки файла с URL-адресом, как вкод ниже:

public static bool Tacoisuptodate(string Version)
    {
        // Load HtmlDocuments 
        var doc = new HtmlWeb().Load("http://www.gw2taco.com/");
        var body = doc.DocumentNode.SelectNodes("//body").Single();
        // Sort out the document to take that he to interest us
        //SelectNodes("//div"))
        foreach (var node in doc.DocumentNode.SelectNodes("//div"))
        {
            // Check for null value
            var classeValue = node.Attributes["class"]?.Value;
            var idValue = node.Attributes["id"]?.Value;
            var hrefValue = node.Attributes["href"]?.Value;

            // We search <div class="widget LinkList" id="LinkList1" into home page >             
            if (classeValue == "widget LinkList" && idValue == "LinkList1")
            {

                foreach(HtmlNode content in node.SelectNodes("//li"))
                {
                    Debug.Write(content.GetAttributeValue("href", false));
                }
            }


        }
        return false;
    }

Если бы кто-нибудь мог мне помочь, я был бы очень признателен.

1 Ответ

0 голосов
/ 01 июня 2018

Достаточно одного xpath.

var xpath = "//h2[text()='Downloads']/following-sibling::div[@class='widget-content']/ul/li/a";

var doc = new HtmlAgilityPack.HtmlWeb().Load("http://www.gw2taco.com/");
var downloads = doc.DocumentNode.SelectNodes(xpath)
                .Select(li => new
                {
                    href = li.Attributes["href"].Value,
                    name = li.InnerText
                })
                .ToList();
...