C# 刮窗

C# 刮窗,c#,.net,interface,screen-scraping,web-scraping,C#,.net,Interface,Screen Scraping,Web Scraping,我正在开发一个与两个系统接口的系统来加载/存储数据 一个古老的终端程序,它使用第三方DLL连接.NET和这个 系统,发送击键并接收击键。这一部分不是 技术上的问题很明显 这是一款128位SSLed网络应用程序,在自己的窗口中从网站上启动。它没有运行在任何类型的Java中,只是HTML和一点JavaScript 我想以某种方式刮取此窗口的内容,以便能够访问其中可用的文档。至少,这需要等待用户导航到正确的页面,然后单击我编写的应用程序中的一个按钮,然后再去寻找正确的窗口,解析当前页面的源代码并下载文

我正在开发一个与两个系统接口的系统来加载/存储数据

  • 一个古老的终端程序,它使用第三方DLL连接.NET和这个 系统,发送击键并接收击键。这一部分不是 技术上的问题很明显

  • 这是一款128位SSLed网络应用程序,在自己的窗口中从网站上启动。它没有运行在任何类型的Java中,只是HTML和一点JavaScript

    我想以某种方式刮取此窗口的内容,以便能够访问其中可用的文档。至少,这需要等待用户导航到正确的页面,然后单击我编写的应用程序中的一个按钮,然后再去寻找正确的窗口,解析当前页面的源代码并下载文件

    在理想情况下,它将从一开始就实现自动化,只需我的应用程序中的用户单击一次即可导航到正确的页面、登录并下载文档


  • 在任何程度上,使用免费的商业组件都是可行的。

    你想要的东西很难实现,如果你不针对特定的浏览器供应商,如FF或Chrome等,更是如此

    建议:

    1) 使用
    System.Net.WebClient
    直接从Web服务器下载源代码

    2) 如果您需要一些无法(或不希望)由某些自动化代码模拟的用户交互,您可以使用类似webkitdotnet的项目,然后您可以创建一个内置浏览器的WinForm应用程序。您将拥有对该浏览器内容的完全访问权限


    Webkitdotnet项目页面:

    您想要的东西很难实现,如果您没有针对特定的浏览器供应商,如FF或Chrome等,则更难实现

    建议:

    1) 使用
    System.Net.WebClient
    直接从Web服务器下载源代码

    2) 如果您需要一些无法(或不希望)由某些自动化代码模拟的用户交互,您可以使用类似webkitdotnet的项目,然后您可以创建一个内置浏览器的WinForm应用程序。您将拥有对该浏览器内容的完全访问权限


    Webkitdotnet项目页面:

    如果浏览器使用Internet Explorer(我正在阅读问题标题),请参考此
    Microsoft Internet控件
    库:

    然后我做了如下的刮削:

    var internetExplorerShells = new SHDocVw.ShellWindows();
    
    string html = null;
    foreach (SHDocVw.InternetExplorer ie in internetExplorerShells)
    {
        if (ie.Document != null)
        {
            var url = ie.LocationURL;
    
            // If the Internet Explorer Address contains _configuration.ScrapingUrl
            if (CultureInfo.InvariantCulture.CompareInfo.IndexOf(
                url,
                _configuration.ScrapingUrl,
                CompareOptions.IgnoreCase) >= 0)
            {
                html = ie.Document.Body.OuterHtml;
                if (html != null)
                    break;
            }
        }
    }
    
    然后只需通过NuGet安装并开始删除html:

    var htmlDocument = new HtmlDocument();
    htmlDocument.LoadHtml(html);
    

    如果浏览器是Internet Explorer(我正在阅读问题标题),只需参考以下
    Microsoft Internet控件
    COM
    库:

    然后我做了如下的刮削:

    var internetExplorerShells = new SHDocVw.ShellWindows();
    
    string html = null;
    foreach (SHDocVw.InternetExplorer ie in internetExplorerShells)
    {
        if (ie.Document != null)
        {
            var url = ie.LocationURL;
    
            // If the Internet Explorer Address contains _configuration.ScrapingUrl
            if (CultureInfo.InvariantCulture.CompareInfo.IndexOf(
                url,
                _configuration.ScrapingUrl,
                CompareOptions.IgnoreCase) >= 0)
            {
                html = ie.Document.Body.OuterHtml;
                if (html != null)
                    break;
            }
        }
    }
    
    然后只需通过NuGet安装并开始删除html:

    var htmlDocument = new HtmlDocument();
    htmlDocument.LoadHtml(html);
    

    你看过使用
    WebClient
    检索HTML/JS和使用HTML敏捷包解析它吗?当然,通过使用fiddler查看流量来确定要发出什么请求。您是否查看过使用
    WebClient
    检索HTML/JS并使用HTML Agility Pack解析它?当然,通过使用fiddler查看流量来确定要发出什么请求。窗口总是在IE中启动,因为用户使用的就是这个窗口。我想附加到现有的IE窗口。该窗口总是在IE中启动,因为这是用户使用的。我想附加到现有的IE窗口。作为彻底性的答案被接受,尽管我不记得8年前我问这个问题时试图做什么。作为彻底性的答案被接受,尽管我不记得8年前我问这个问题时试图做什么。