1

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

  1. 一个古老的终端程序,它使用第 3 方 DLL 来桥接 .NET 和该系统,发送击键并接收它们。这部分没有问题,因为技术很清楚。

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

    我想以某种方式抓取此窗口的内容,以便可以访问其中的可用文档。至少,这将等待用户导航到正确的页面,然后单击我编写的应用程序中的按钮,然后查找正确的窗口,解析当前页面的源并下载文件.

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

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

4

2 回答 2

1

你想要的很难实现,如果你不针对特定的浏览器供应商,比如 FF 或 Chrome 等,那就更难实现了。

建议:

1) 用于System.Net.WebClient直接从网络服务器下载源代码。

2)如果你需要一些自动化代码不能(或者你不想)模拟的用户交互,你可以使用webkitdotnet 之类的项目,然后你可以创建一个 WinForm 应用程序,里面有一个浏览器。您将拥有对该浏览器内容的完全访问权限。

Webkitdotnet 项目页面:http: //sourceforge.net/projects/webkitdotnet/

于 2012-08-04T11:49:55.267 回答
0

如果浏览器 Internet Explorer(我正在阅读问题标题),只需引用此Microsoft Internet Controls 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 安装HTMLAgilityPack并开始抓取 html:

var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(html);
于 2020-07-10T16:16:46.977 回答