【问题标题】:get value from web page using Html Agility Pack使用 Html Agility Pack 从网页中获取价值
【发布时间】:2013-12-17 02:35:00
【问题描述】:

我正在尝试使用HTML Agility Pack 获取“矿池哈希率”的值。当我点击我的字符串哈希时,我得到Object reference not set to an instance of an object。谁能告诉我我做错了什么?

string url = http://p2pool.org/ltcstats.php?address

protected void Page_Load(string address)
{
    string url = address;
    HtmlWeb web = new HtmlWeb();
    HtmlDocument doc = web.Load(Url);

    string hash = doc.DocumentNode.SelectNodes("/html/body/div/center/div/table/tbody/tr[1]")[0].InnerText;
}

【问题讨论】:

  • 我相信 Html Agility Pack 是基于 1 的。我会将其分解并保留 InnerText,然后在您的节点上执行 foreach 并调试以查看是否有任何节点以及其中的内容。
  • 我有类似的问题,看看这个(stackoverflow.com/questions/30805833/…)

标签: c# c#-4.0


【解决方案1】:

假设您正在尝试访问该网址,当然它应该会失败。该 url 不会返回完整的文档,而只是 html 的片段。没有html 标签,也没有body 标签,只有div。您的 xpath 查询不返回任何内容,因此返回空引用异常。你需要查询正确的东西。

当我访问该网址时,它会返回:

<div>
    <center>
        <div style="margin-right: 20px;">
        <h3>Personal LTC Stats</h3>
        <table class='zebra-striped'>
        <tr><td>Pool Hashrate: </td><td>66.896 Mh/s</td></tr>
        <tr><td>Your Hashrate: </td><td>0 Mh/s</td></tr>  
        <tr><td>Estimated Payout: </td><td> LTC</td></tr>
        </table>
        </div>
    </center>
</div>

鉴于此,如果您想获得Pool Hashrate,您可以使用更像这样的查询:

/div/center/div/table/tr[1]/td[2]

最后你需要这样做:

var url = "http://p2pool.org/ltcstats.php?address";
var web = new HtmlWeb();
var doc = web.Load(url);
var xpath = "/div/center/div/table/tr[1]/td[2]";
var poolHashrate = doc.DocumentNode.SelectSingleNode(xpath);
if (poolHashrate != null)
{
    var hash = poolHashrate.InnerText;
    // do stuff with hash
}

【讨论】:

  • 我看的时候看到了html和body标签
  • 好吧,如果你通过浏览器打开它,浏览器会添加这些。直接访问该网站再试一次。
【解决方案2】:

问题是 xpath 没有找到指定的节点。您可以为 table 或 tr 指定一个 id 以获得更小的 xpath

另外,根据您的代码,我假设您只在寻找单个节点,因此您可能想要使用这样的东西

doc.DocumentNode.SelectSingleNode("xpath");

另一个不错的选择是使用Fizzler

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2011-05-10
    相关资源
    最近更新 更多