我想用C#编写一个小程序,这样就可以以不同的方式显示来自网站的一些数据。系统托盘通知和不同的观点等等.
所需的数据在浏览器中显示为普通文本,可以将复制/粘贴作为文本复制到编辑器中。当我使用wget这样的工具时,我可以下载网站的html源代码,但我注意到所需的数据隐藏在javascript (和ajax?)中。
有没有办法从脚本/命令行/c#/java或类似的地方下载网站的真实内容?某种Javascript解释器,解决了数据和我得到的网站作为文本输出?
我还有什么其他的想法可以提取数据吗?
谢谢
编辑2:
问题解决了。见答案。
发布于 2014-05-17 17:03:20
终于..。我做了一个PhantomJS脚本,完全可以满足我的需要.
它允许登录到站点,然后执行javascripts来显示内容。
此外,我还添加了一个命令来生成网站的屏幕截图,以便更容易地进行调试。
多亏了RolandKrüger和remy,他们帮助我们找到了解决方案。
我们可能需要稍微修改一下脚本,但我认为它会有所帮助;)
var page = require('webpage').create();
page.onConsoleMessage = function(msg) {
console.log(msg);
};
page.open("http://www.somewebsite.com", function(status) {
if ( status === "success" ) {
page.evaluate(function() {
document.querySelector("input[name='MAIL_ADDRESS']").value = "mymail@gmail.com";
document.querySelector("input[name='PASSWORD']").value = "mypassword";
document.getElementsByName("LOGIN_FORM_SUBMIT")[0].click();
console.log("Login submitted!");
});
window.setTimeout(function () {
page.render('screenshot.png');
var ua = page.evaluate(function () {
return document.getElementById('AnElementIdOnMyWebsite').innerText;
});
console.log(ua);
phantom.exit();
}, 5000);
}
});发布于 2014-05-15 09:04:22
基于Webkit的浏览器(如Google或Safari)有内置的开发工具。在Chrome中,您可以打开它菜单-> Tools ->Developer Tools。“网络”选项卡允许您查看有关每个请求和响应的所有信息:
在图片的底部,您可以看到我已经将请求过滤到XHR --这些都是由javascript代码发出的请求。
提示:每次加载页面时,日志都被清除,在图片底部,黑点按钮,左到清除按钮,将保留日志。
在分析请求和响应之后,您可以从web爬虫中模拟这些请求并提取有价值的数据。在许多情况下,获得数据要比解析HTML更容易,因为该数据不包含表示逻辑,并且被格式化为由javascript代码访问。
Firefox也有类似的扩展,叫做firebug。有些人会认为firebug更强大,但我喜欢webkit的简单性。
https://stackoverflow.com/questions/23673617
复制相似问题