silverlight 4页面上的网页抓取

Web scraping on silverlight 4 page

有一个嵌入了银光应用程序的网页,我想抓取它。我想知道在 C#、Java 或 Python 中是否有支持 silverlight 的网络抓取解决方案或浏览器自动化解决方案(或任何 trick/hack)。

我目前正在尝试 silvernium 但这是一个非常过时的项目,似乎无法与 silverlight 4 一起正常工作。

页面中SL对象的html部分信息如下:

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">

<param name="source" value="PATH/WebSilverlight.xap"/>
<param name="onerror" value="onSilverlightError"/>
<param name="background" value="white"/>
<param name="minRuntimeVersion" value="4.0.50524.0"/>
<param name="autoUpgrade" value="true"/>
<param name="windowless" value="true"/>
<param name="enableautozoom" value="true"/>
...

我已经与 Telerik testing framework 成功合作了

automation solution that supports silverlight in C#

它是免费的,一旦你习惯了它 - 非常容易,因为丰富的 API 和跨浏览器的兼容性。也许最棘手的部分是最初配置测试。

简单示例:

Settings mySettings = new Settings();
mySettings.Web.DefaultBrowser = BrowserType.InternetExplorer;
Manager myManager = new Manager(mySettings);
myManager.Start();    
myManager.LaunchNewBrowser();

myManager.ActiveBrowser.NavigateTo("http://www.example.com");

Element mybtn = myManager.ActiveBrowser.Find.ByTagIndex("input", 3);
myManager.ActiveBrowser.Actions.Click(mybtn);

myManager.Dispose();

它的一个很好的补充是 Windows Inspect tool。它将使您能够 select 任何 UI 元素并在某些棘手的情况下查看元素的辅助功能数据。

更新:

我搜索了一些以前用过的有用文档链接。看看Getting started with Silverlight UI Automation and Locating elements

最后,我使用基于计算机视觉的技术 SikuliX and getting a printed PDF out of the Silverlight web app like normal normal user would to get the information. Here is an script 实现了一个解决方法,该技术展示了如何 运行 这与 Selenium 一起使用。

另一种方法是破解请求并保持会话活动,同时使用 Scrapy, abot, crawler4j 或任何其他类似技术导航到您需要的信息。