问题描述
我目前正在尝试在 this page 上获取一个 div 元素,特别是这个 html 代码块:
<div id="glossary-space">
<div class="noresults">No results.</div>
</div>
但是当我尝试使用 Weblcient 下载页面时,结果如下:
<div id="glossary-space"></div>
using (WebClient client = new WebClient ()) // WebClient class inherits Idisposable
{
string htmlCode = client.DownloadString("http://yoursite.com/page.html");
}
解决方法
你没有看到的原因
<div id="glossary-space">
<div class="noresults">No results.</div>
</div>
当您使用 .DownloadString() 方法是因为 WebClient 不解析 javascript。如果词汇表为空,则通过glossary.js 中的以下代码(第296 行左右)插入无结果的div(如上所示)。
if(termlist.length == 0) {
var empty = document.createElement('div');
empty.setAttribute('class','noresults');
empty.innerHTML = 'No results.';
//document.getElementById('glossary-space').appendChild(document.createTextNode("No results"));
document.getElementById('glossary-space').appendChild(empty);
}
另一方面,即使您要输入包含内容的网址(例如 https://glossary.infil.net/?t=KI),它仍然会返回
因为该数据也是由 javascript 加载的。在这种情况下,最好使用可以使用 javascript 的网络驱动程序,例如 Selenium。