cefsharp修改html,cefsharp修改回应大文件不完整
cefsharp设置元素值
可以使用CefSharpAPI提供的ExecuteScriptAsync方法来设置cefsharp元素值。根据查询相关资料信息显示,awaitbrowser.EvaluateScriptAsync("document.getElementById('myElementId').value='MyValue'。")。。
c# cefsharp能不能像webbrowser那样获取到元素,修改这个元素的属性呢
cefsharp新手慎用,用的是js代码,可以获取元素修改元素,但是使用js。
var?frame?=?cb.GetMainFrame();
var?task?=?frame.EvaluateScriptAsync("(function()?{?return?document.getElementsByTagName('input')[0].value;?})();",?null);
这段代码你要充分利用py抓取到可靠信息,知道第一个input是什么,而且有value属性,不然就会报错。
frame.EvaluateScriptAsync()允许你写入js片段。
网页抓捕当中我觉得这个还是靠谱的,现在C#有很多,webbrowser、webkitbrowser、geckofx、webkitsharp......都是些噱头,一般的网页都无法搞定。
py的webdriver和android的webview同出一辙,跟webkit一样。
但是获取信息是不行的,比如我要抓取哪个元素值,你老老实实先把decument对象获取到,再抓。
C#调用chrome获取页面html内容
这个功能用在浏览器中用js就能完成,而且更方便。代码如下:
function?crawl(baseUrl,?pageStart,?pageEnd){??
??for(var?i?=?pageStart;?i?=?pageEnd;?i++){
????var?xhr?=?new?XMLHttpRequest();
????xhr.open("get",?baseUrl?+?i);
????xhr.onload?=?function(page)?{
??????return?function(){
????????console.log("第"?+?page?+?"页内容如下:");
????????console.log(xhr.responseText);
????????//TODO?:?这里你可以发送ajax请求把数据保存到你的服务器端,前提是你服务器端要设置跨域响应头:Access-Control-Allow-Origin?
??????}
????}(i);
????xhr.send();????
??}
}
使用方法,打开你要的网站,在chrome的控制台下执行,crawl("你的页面地址?page参数=", 1, 3)