我正在开发与两个系统接口以加载/存储数据的系统。
一个古老的终端程序,它使用第三方DLL来桥接.NET和它 系统,发送击键并接收它们。这部分不是 技术问题很明显。
一个128位的SSL网络应用程序,从网站上自己的窗口启动。它不是在任何类型的Java讨厌内容中运行,只是HTML和一点点JavaScript。
我想以某种方式抓取此窗口的内容,以便我可以访问其中的可用文档。至少,这将等待用户导航到正确的页面,然后单击我编写的应用程序中的按钮,然后查找正确的窗口,解析当前页面的源并下载文件
在理想的世界中,它从一开始就是自动化的,只需要从我的应用程序中的用户单击一下即可导航到正确的页面,登录并下载文档。
#2是否可以在任何程度上使用免费组件的商业广告。
答案 0 :(得分:1)
如果您不针对特定浏览器供应商(如FF或Chrome等),您想要的内容很难实现,甚至更多。
建议:
1)使用System.Net.WebClient
直接从网络服务器下载源代码。
2)如果您需要某些自动化代码无法(或您不想)模拟的用户交互,您可以使用 webkitdotnet 等项目,然后您可以创建一个其中有浏览器的WinForm应用程序。您将拥有该浏览器内容的完全访问权限。
Webkitdotnet项目页面:http://sourceforge.net/projects/webkitdotnet/
答案 1 :(得分: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);