通过htmlagilitypack从html表获取信息

时间:2014-08-09 17:40:56

标签: c# html windows-8.1 html-agility-pack windows-phone-8.1

我遇到通过htmlagilitypack从html表获取信息的问题。

html(www.ldoceonline.com/search/?q=arg)看起来像这样

<body>
    <div>
        <div>
            <div>
                <div>
                    <table>
                    <tr>
                        <td></td>
                        <td></td>
                    </tr>
                    <tr>
                        <td><td><a href><span/></a><span/><span/><span><a/><a/></span></td> //I want to get information from here, from a href and spans.
                    <td>...
                    </tr>
                    </table>
...

我的c#代码。

var url = String.Format(urlToTheSite);
HtmlDocument doc = new HtmlWeb().LoadFromWebAsync(url).Result;

HtmlNodeCollection tablesHtmlNodeCollection = doc.DocumentNode.. //stack in here

我有一个问题,因为在我发现的文章中我只看到这样的答案:

var url = String.Format(urlToTheSite);
HtmlDocument doc = new HtmlWeb().Load();
HtmlNodeCollection tablesHtmlNodeCollection = doc.DocumentNode.SelectNodes(nodeToSelect);

但我没有方法Load for HtmlWeb我只有这些:https://imgur.com/XGUyRbh 我也没有HtmlNodeCollection中的DocumentNode方法SelectNodes:https://imgur.com/X1KnZlt

我尝试这样的事情,但我只得到4个结果#comment/#text/html/text,我不知道如何深入。

HtmlDocument doc = await new HtmlWeb().LoadFromWebAsync(urlToTheSite);
var tablesHtmlNodeCollection = doc.DocumentNode.ChildNodes.ToList().Where(x => x.OriginalName.Equals("html")).ToList();//this one result one result

感谢您的帮助,如果这取决于我为Window8.1 / WP8.1编写了一个通用应用程序。

1 个答案:

答案 0 :(得分:0)

  

&#34; ...如果这取决于我为Window8.1 / WP8.1编写了一个通用应用程序。&#34;

是的,这取决于平台。适用于通用应用的HtmlAgilityPack(HAP)没有SelectNodes()SelectSingleNode(),因为两者都需要xpath,而这个平台并不支持。在这种情况下,您可以仅依赖于HAP的LINQ API,例如,获取页面中的所有表,您可以执行以下操作(返回4结果):

var tables = doc.DocumentNode.Descendants("table").ToList();