使用 WebClient 下载 html 时缺少 div 元素

问题描述

我目前正在尝试在 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