Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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#_Xpath_Visual Studio 2017_Richtextbox_Html Agility Pack - Fatal编程技术网

C# HtmlAgilityPack-文本框中不显示任何内容

C# HtmlAgilityPack-文本框中不显示任何内容,c#,xpath,visual-studio-2017,richtextbox,html-agility-pack,C#,Xpath,Visual Studio 2017,Richtextbox,Html Agility Pack,我有一个带有文本框的Windows窗体,代码假设使用我通过chromes developer工具获得的xpath从网站中提取信息,并将其显示在所述文本框中 问题是当我运行程序时,文本框中没有显示任何内容。我不确定用于获取信息的代码是否错误,或者显示所述信息的代码是否错误。请注意,此代码使用HtmlAgilityPack 以下是相关代码: private void richTextBox1_TextChanged(object sender, EventArgs e) {

我有一个带有文本框的Windows窗体,代码假设使用我通过chromes developer工具获得的xpath从网站中提取信息,并将其显示在所述文本框中

问题是当我运行程序时,文本框中没有显示任何内容。我不确定用于获取信息的代码是否错误,或者显示所述信息的代码是否错误。请注意,此代码使用HtmlAgilityPack

以下是相关代码:

private void richTextBox1_TextChanged(object sender, EventArgs e)
    {
        string Url = "https://apps.ko.com/aami/iguest/default.asp";
        HtmlWeb web = new HtmlWeb();
        HtmlAgilityPack.HtmlDocument doc = web.Load(Url);

        string username = doc.DocumentNode.SelectNodes("/html/body/center/div/table/tr[1]/td[2]/strong")[0].InnerText;
        string password = doc.DocumentNode.SelectNodes("/html/body/center/div/table/tr[2]/td[2]/strong")[0].InnerText;
        string summary = doc.DocumentNode.SelectNodes("/html/body/center/div/table/tr[4]")[0].InnerText;


        richTextBox1.Text = "User Name: " + username + " | Password: " + password + " | Summary: " + summary;

    }
内联网页面上列出了一个用户名和密码,我正试图从网页中提取并在文本框中显示它,只要此应用程序在域计算机上运行,它就应该能够访问该页面并显示所需信息。我不想登录任何东西,只是从网页中提取一些文本

你们中的任何人都无法看到该页面,因为您的页面不在只能从其访问的域中

以下是由于安全原因更改了代码中的网址的HTML页面


来宾无线接入

宾客可以使用下面的登录凭据访问无线服务

用户ID: KOGUEST 密码: P@ssword(密码区分大小写。) 密码每周在美国东部时间周六午夜更新一次。


为您的客人准备


您正在从浏览器复制xpath,这是非常不可靠的。我不知道这个网站是否有一个不同的HTML取决于地区。但我没有“强”标签或“中心”标签

做一个正确的xpath,它不依赖于从浏览器获得的xpath——它们很容易发生更改,如果发生小的更改,就会破坏您的程序(xpath在我这方面不起作用的事实已经证明了这一点)。做一件简单的事情很容易。因为您现在所拥有的并没有给出您想要的东西的明确指示,而依赖于标记的属性和内容的xpath则会给出

我还想进一步阐述你的后续问题,因为我已经知道你想做什么了。。。您不能通过使用HtmlAgilityPack输入用户名和密码,然后登录。您可以使用Fiddler分析网页包,并复制您的登录方式。或者,您可以选择更简单的方法,将Selenium与无头浏览器(如Phantomjs)结合使用


最后。当您确实让XPath查看页面源代码时。不要检查滤芯。页面源表示加载到HtmlDocument中的HTML。如果您在站点上执行某些步骤后检查元素,您将获得源代码(例如,如果站点依赖JS og ajax更新内容)。

使用该Html,您的xpath将丢失
tbody
。在
标记内,有一个
tbody
标记,表的行在该
tbody
内。例如,第一个xpath应该是
/html/body/center/div/table/tbody/tr[1]/td[2]/strong
我读过一些文章,其中come错误地添加了tbody,但是我使用chrome获得了xpath,所以它可能是错误的,我不知道如何在Firefox中编写xpath my Self,右键单击一个元素,按“inspect”。然后右键单击Html标记并复制xpath。您还可以在控制台中使用$x(“MyXPath here”)来缩短和测试xpath。其思想是编写类似于
//td[text()='User ID:']/以下同级::td/strong
的内容,而不是完整路径。注意开头的双斜杠
/
。有了这个,它可以在任何地方找到它。镀铬检查工具也很好。