【问题标题】:I've been triying to get data from website with HtmlAgilityPack我一直在尝试使用 HtmlAgilityPack 从网站获取数据
【发布时间】:2017-03-02 19:31:30
【问题描述】:

首先,我尝试了很多方法,但我无法解决我的问题。我不知道如何将我的节点方式放置在 SelectSingleNode(?) 方法中。我在我的 c# 代码中创建了一个 html 路径来到达我的节点,但是如果我运行此代码,由于我的 html 路径,我会使用 NullReferenceException。我只是想让您知道如何创建我的 html 方式或任何其他解决方案?
这是html代码示例:

<html>
    <body>
        <div id="container">
            <div id="box">
                <div class="box">
                    <div class="boxContent">
                        <div class="userBox">
                            <div class="userBoxContent">
                                <div class="userBoxElement">
                                    <ul id ="namePart">
                                        <li>
                                            <span class ="namePartContent>

                                            </span>
                                        </li>
                                    </ul>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

这是我的 C# 代码:

namespace AgilityTrial
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri url = new Uri("https://....");
            WebClient client = new WebClient();
            client.Encoding = Encoding.UTF8;
            string html = client.DownloadString(url);
            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(html);

            string path = @"//html/body/div[@id='container']/div[@id='classifiedDetail']"+
                "/div[@class='classifiedDetail']/div[@class='classifiedDetailContent']"+
                "/div[@class='classifiedOtherBoxes']/div[@class='classifiedUserBox']"+
                "/div[@class='classifiedUserContent']/ul[@id='phoneInfoPart']/li"+
                "/span[@class='pretty-phone-part show-part']";
            var tds =  doc.DocumentNode.SelectSingleNode(path);
            var date = tds.InnerHtml;

              Console.WriteLine(date);
        }
    }
}  

【问题讨论】:

    标签: c# html html-agility-pack


    【解决方案1】:

    以您的namePartContent span 节点为例。如果您想获取该数据,您只需执行以下操作:

    doc.DocumentNode.SelectSingleNode(".//span[@class='namePartContent']")?.InnerText;

    它将搜索/获取一个以 namePartContent 作为其类的跨度节点,从根节点开始,在您的情况下为 &lt;html&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-10
      • 1970-01-01
      • 2015-11-15
      • 2021-12-20
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多