我目前正在开发一个使用 HTTP requets 和 webBrowser 控件的C# 库。我的库用于WinDev程序并在 WinDev 应用程序和 Web 平台 (agenda.ch) 之间创建直接链接。我需要使用一些 WebScraping 所以首先开始使用HtmlAgilityPack并且效果很好,但是在 WinDev 上运行我的库时,当 HtmlAgilityPack HtmlDocument 实例化时库突然停止......然后我决定删除 HtmlAgilityPack 和直接使用 System.Windows.Forms HtmlElement类来检索所需信息。
这就是我遇到问题的地方:当使用 foreach 循环检查文档中的每个 HtmlElement 时,我只能使用 GetAttribute() 函数来检查它的类值。但是由于某种原因,返回的值总是空的。我做了很多不同的测试,但没有一个给出逻辑响应,这就是我转向 StackOverflow 的原因。我尝试使用另一个属性名称,例如 id 并且效果很好。我只是无法理解为什么无法恢复类属性值。
private void RecoverClients(HtmlDocument source)
{
HtmlDocument doc = source;
HtmlElementCollection clientSection = doc.GetElementsByTagName("DIV");
HtmlElement clients;
foreach (HtmlElement element in clientSection)
{
// Tests
var test = element.GetAttribute("class"); // Always empty
var test2 = element.GetAttribute("id"); // When has id attribute, works
if (element.GetAttribute("class") == "customer_list") // The code I use
{
clients = element;
break;
}
}
这是由 WebBrowser 恢复并发送到 RecoverClients 函数的 HTML 代码的一部分。
<DIV class="customer_list">
<UL>
<LI data-id="xxxx"><
A href="#customers/xxxx" data-action="show">
<STRONG>ClientName</STRONG>ClientSirName<BR><SMALL>client1@tech.ch</SMALL>
</A>
</LI>
<LI data-id="xxxx"><
A href="#customers/xxxx" data-action="show">
<STRONG>ClientName</STRONG>ClientSirName<BR><SMALL>client2@tech.ch</SMALL>
</A>
</LI>
</UL>
</DIV>
如果您已经遇到此类问题,或者我没有使用正确的技术来恢复带有类名的 HtmlElement,请告诉我。
请注意,我不能使用 HtmlAgilityPack,以前工作得很好,但是一旦在 WinDev 中实现库就会导致问题......