Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.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#HtmlAgilityPack刷新值_C#_Html Agility Pack - Fatal编程技术网

C#HtmlAgilityPack刷新值

C#HtmlAgilityPack刷新值,c#,html-agility-pack,C#,Html Agility Pack,从一段时间以来,我一直在用C#编写代码,并试图为我自己和我的朋友创建一些小工具,但我遇到了一个问题,这使我无法继续下去 问题是这个。我想使用HmtlAgilityPack来获得一个不断变化的值,以便将其用于几个不同的动作。但问题是,在我重新启动程序之前,该值会一直停留在相同的值上 下面是我使用的代码: public static void Main(string[] args) { Console.WriteLine("Running the program!");

从一段时间以来,我一直在用C#编写代码,并试图为我自己和我的朋友创建一些小工具,但我遇到了一个问题,这使我无法继续下去

问题是这个。我想使用HmtlAgilityPack来获得一个不断变化的值,以便将其用于几个不同的动作。但问题是,在我重新启动程序之前,该值会一直停留在相同的值上

下面是我使用的代码:

public static void Main(string[] args)
    {
        Console.WriteLine("Running the program!");
        Console.WriteLine("Reading the value!");
        int i = 0;
        string url = "Website";
        while (i < 300)
        {
            i++;
            HtmlWeb web = new HtmlWeb();
            HtmlDocument LoadWebsite = web.Load(url);
            HtmlNode rateNode = LoadWebsite.DocumentNode.SelectSingleNode("//div[@class='the-value']");
            string rate = rateNode.InnerText;
            Console.WriteLine(i + ". " + rate);
            Thread.Sleep(1000);

        }
        Console.WriteLine("Done");
        Console.ReadLine();
    }
publicstaticvoidmain(字符串[]args)
{
WriteLine(“运行程序!”);
WriteLine(“读取值!”);
int i=0;
string url=“网站”;
而(i<300)
{
i++;
HtmlWeb web=新的HtmlWeb();
HtmlDocument LoadWebsite=web.Load(url);
HtmlNode rateNode=LoadWebsite.DocumentNode.SelectSingleNode(“//div[@class='the-value']”);
字符串速率=rateNode.InnerText;
控制台写入线(i+“+”+速率);
睡眠(1000);
}
控制台。写入线(“完成”);
Console.ReadLine();
}
所以这里它首先加载网站。接下来它从div中获取值。然后它写入值以便我可以检查它。但它只是一直在写相同的值


我的问题是,我不知道我必须改变什么才能得到最新的价值,因为价值每隔几秒钟就会改变,我需要从我的网站获得最新的价值。这就像需要该值来保持系统运行一样。

声明您的
HtmlWeb=new HtmlAgilityPack.HtmlWeb()在循环之外,不必为每个循环创建。
您可能在要爬网的网站中存在缓存问题

设置
web.UsingCache=false

如果不起作用,请附加一些随机字符串,以便每个调用都不同

代码:

HtmlWeb-HtmlWeb=new-HtmlAgilityPack.HtmlWeb();
htmlWeb.UsingCache=false;
int i=0;
而(i<300)
{
var uri=new uri($“yoururl?z={Guid.NewGuid()}”);
i++;
HtmlAgilityPack.HtmlDocument LoadWebsite=htmlWeb.Load(uri.AbsoluteUri);
HtmlNode rateNode=LoadWebsite.DocumentNode.SelectSingleNode(“//div[@class='the-value']”);
字符串速率=rateNode.InnerText;
控制台写入线(i+“+”+速率);
睡眠(1000);
}

线程之后。睡眠
,清除所有内容,即
web=null
LoadWebsite=null
,然后检查下一次迭代是否提供相同的记录。感谢您的建议,但它没有改变,或者至少没有改变得那么快。可能有一些东西必须完全改变,比如先加载另一端,然后再加载第一个,或者清理程序的缓存,或者类似的东西来获取值。顺便说一句,数值已经改变了,但只有2分钟一次,这与你的要求无关,您可以使用
计时器
而不是休眠主线程,这会导致应用程序中没有响应状态。我可以尝试,但这仍然无法解决我的问题。是否有人对我下一步可以尝试什么有其他想法?htmlWeb.UsingCache=false;不适合我。我可以使用HtmlWeb,但在使用缓存时找不到它。或者我遗漏了一些必须首先添加的内容?您使用的是哪个版本的HttpAgilityPack?据我所知,它是最新的可用版本。VisualStudio说它是v4.0.30319哦,如果你想知道的话,我正在使用4.5框架版本,我已经更新了我的代码;我的HAP和你的一样,可以使用缓存。你在哪里下载的?我从这里得到了我的
HtmlWeb htmlWeb = new HtmlAgilityPack.HtmlWeb();
htmlWeb.UsingCache = false;
int i = 0;
while (i < 300)
{
    var uri = new Uri($"yoururl?z={Guid.NewGuid()}");
    i++;
    HtmlAgilityPack.HtmlDocument LoadWebsite = htmlWeb.Load(uri.AbsoluteUri);
    HtmlNode rateNode = LoadWebsite.DocumentNode.SelectSingleNode("//div[@class='the-value']");
    string rate = rateNode.InnerText;
    Console.WriteLine(i + ". " + rate);
    Thread.Sleep(1000);
}