我想用C#检查远程网页上的一些信息。
第一个问题,是否可以在不使用Web浏览器的情况下完全加载(使用Javascript)网页,只需使用URL?
第二个问题,是否可以验证没有浏览器的远程页面上是否存在css选择器,只有URL?
感谢您的聆听!
答案 0 :(得分:0)
如果你的意思是'远程'而不是“遥远的”#39;然后 - 是的,好心的。
你的问题开始询问C#然后提到javascript。 不确定为什么语言环境会发生变化 - 但我会尝试回答这两种情况。
您可以使用Javascript加载页面。
是:您需要做的是对URL执行GET请求。 关于你在这个阶段使用Javascript做什么的有趣的事情是,你在网络浏览器环境中做的任何GET请求都可以访问在该浏览会话中设置的cookie和身份验证 - 特别适合测试自动化。例如:您需要下载PDF,但PDF受身份验证检查保护。
xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET", "http://www.google.com", false);
xmlhttp.send();
var data = JSON.parse(xmlhttp.responseText);

这将返回您请求的URL的html内容,如果它是二进制文件,则返回二进制内容。 如果是html内容,您可以使用javascript将当前页面源更改为您刚才请求的页面源。
例如:
document.documentElement.innerHTML = myReturnedData;
该页面将立即加载并显示返回的页面内容。
安装完成后,您将能够实例化HtmlDocument,然后使用您指定的定位器查询文档。
var doc = new HtmlAgilityPack.HtmlDocument();
doc.Load("test.html");
IList<HtmlNode> nodes = doc.QuerySelectorAll("div .my-class[data-attr=123] > ul li");
HtmlNode node = nodes.QuerySelector("p.with-this-class span[data-myattr]");