Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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# 使用C从打开的IE选项卡中抓取数据#_C#_Web Scraping - Fatal编程技术网

C# 使用C从打开的IE选项卡中抓取数据#

C# 使用C从打开的IE选项卡中抓取数据#,c#,web-scraping,C#,Web Scraping,我的应用程序有一个功能,用于检查是否有Internet Explorer选项卡在URL中以特定字符串打开,如果找到,则从该页面上的特定元素中刮取innerText值 以下代码基于适用于我的应用程序的另一部分的代码,其中数据包含在iFrame中包含的元素中,但在所讨论的功能中并非如此(即不涉及iFrame)。此代码在尝试显示请求元素的innerText值时引发“对象引用未设置为对象的实例”异常,可能是因为它找不到该元素 SHDocVw.ShellWindows shellWindows = new

我的应用程序有一个功能,用于检查是否有Internet Explorer选项卡在URL中以特定字符串打开,如果找到,则从该页面上的特定元素中刮取innerText值

以下代码基于适用于我的应用程序的另一部分的代码,其中数据包含在iFrame中包含的元素中,但在所讨论的功能中并非如此(即不涉及iFrame)。此代码在尝试显示请求元素的innerText值时引发“对象引用未设置为对象的实例”异常,可能是因为它找不到该元素

SHDocVw.ShellWindows shellWindows = new ShellWindows();

        foreach (SHDocVw.WebBrowser ie in shellWindows)
        {
            if (ie.LocationURL.ToString().IndexOf("MyPage.aspx") != -1)
            {

                mshtml.HTMLDocument currentTab = ie.Document as mshtml.HTMLDocument;

//The below line throws an 'Object reference not set to an instance of an object.' exception.
MessageBox.Show(currentTab.getElementById("lblFoo").innerText.ToString());

break;
}
}

我做错了什么?另外,我对网络抓取还不熟悉,所以我知道这可能不是最新的方式。我知道HtmlAgilityPack,但是在打开的IE选项卡中搜索特定url后,我找不到如何使用它搜索元素(并提取其值)的示例。

这些链接可以帮助您以各种方式自动化Internet Explorer。

这些链接帮助您以各种方式自动化Internet Explorer。

可能是因为currentTab.getElementById(“lblFoo”)不返回对象。首先检查是否存在。感谢您的回复。“lblFoo”肯定存在于我目标选项卡的源HTML中。可能是因为currentTab.getElementById(“lblFoo”)不返回对象。首先检查是否存在。感谢您的回复。“lblFoo”肯定存在于我目标选项卡的源HTML中。