Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Htmlagibility Pack解析网站时出现意外结果_C#_Console Application_Html Agility Pack - Fatal编程技术网

C# 使用Htmlagibility Pack解析网站时出现意外结果

C# 使用Htmlagibility Pack解析网站时出现意外结果,c#,console-application,html-agility-pack,C#,Console Application,Html Agility Pack,我需要在C#Console应用程序中使用HTML Agility Pack解析页面信息,我有以下几点: public static void ResultsData() { const string url = "https://example.com"; const string rowXPath = "//*[@class=\"result\"]"; var web = new HtmlWeb(); var doc = web.Load(url);

我需要在C#Console应用程序中使用HTML Agility Pack解析页面信息,我有以下几点:

public static void ResultsData()
{
    const string url = "https://example.com";
    const string rowXPath = "//*[@class=\"result\"]";

    var web = new HtmlWeb();
    var doc = web.Load(url);

    HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes(rowXPath);
    for (int i = 0; i < nodes.Count; i++)
    {
        Console.WriteLine(nodes[i].InnerText);
    }
}
公共静态void ResultsData()
{
常量字符串url=”https://example.com";
常量字符串rowXPath=“/*[@class=\”结果\“]”;
var web=新的HtmlWeb();
var doc=web.Load(url);
HtmlNodeCollection节点=doc.DocumentNode.SelectNodes(rowXPath);
for(int i=0;i
上面的内容似乎返回了第二组结果,但我不知道为什么

我正在分析脚本中的信息:

<script>
var displayOrder = "ascending";
function NumberedOrder() {
if (displayOrder == "ascending")
{
document.getElementById("Order").innerHTML = "<span class=\"result\">1</span><span class=\"result\">2</span><span class=\"result\">3</span>";
document.getElementById("OrderButton").innerHTML = "Display ascending order";
displayOrder = "desc";
}
else
{
document.getElementById("Order").innerHTML = "<span class=\"result\">3</span><span class=\"result\">2</span><span class=\"result\">1</span>";
document.getElementById("OrderButton").innerHTML = "Display descending order";
displayOrder = "asc";
}
};
</script>

var displayOrder=“升序”;
函数numberorder(){
如果(显示顺序=“升序”)
{
document.getElementById(“订单”).innerHTML=“123”;
document.getElementById(“OrderButton”).innerHTML=“显示升序”;
displayOrder=“desc”;
}
其他的
{
document.getElementById(“订单”).innerHTML=“321”;
document.getElementById(“OrderButton”).innerHTML=“显示降序”;
displayOrder=“asc”;
}
};
我期望得到以下结果:

一, 2. 三,

我实际上得到的是:

三, 2. 一,


任何帮助都将不胜感激,我看过类似的线程,但都没有帮助我实现我想要的。

也许出于某种模糊的实现原因,解析是从EOF到BOF执行的

在这种情况下,以下操作会产生预期的结果吗

for (int i = nodes.Count - 1; i >= 0; i--)
{
  Console.WriteLine(nodes[i].InnerText);
}

这段代码似乎不必要地复杂,但我看不出有任何其他方法可以绕过您提供的信息,当然除了更改Agility Pack的源代码和编译您自己的版本之外。我没有立即找到将参数传递给
DocumentNode的方法。选择Nodes
可以更改默认顺序。

能否显示它正在解析的实际HTML?您向我们展示了修改页面的JavaScript。如果运行该JavaScript,并且
displayOrder
不是
升序
,那么它将向HTML中注入按3、2、1排序的元素,然后您将最终解析这些元素。感谢您的回复,这确实会反转结果集。但是,它仍然从“else”而不是“if”获取结果。@H3ALY它没有从
else
获取结果,因为这是JavaScript,HtmlAgilityPack不会解析或运行JavaScript。我明白了。星期五我会再给它一次检查,看看我能不能想出别的办法。与此同时,祝你好运!