getElementsByTagName返回空的HTML元素

问题描述 投票:0回答:1

我正在构建一个应用程序,以便能够从Instagram.com提取图像。我将源代码作为字符串获取,并将其转换为HTML文档,以便能够解析文档的正文。

在正常的摘要页面上,他们使用<article>显示联系人的不同图片。因此,我将这篇文章用作提取信息的主要标签。

var articles = selectedDoc.GetElementsByTagName("article");

这返回了HTML元素集合中的三篇文章,但是,当我对其进行调试时,它们似乎都是空的。您可以在所附的屏幕截图中看到,innerHTML和innerText一样为空。

但是在源代码本身中,它一点也不为空,如您在源代码屏幕截图中所见。

有人知道为什么会这样吗?

谢谢,screenshot debuggerscreenshot sourcecode

***编辑根据要求:这是我设置HTMLDocument的位置

WebBrowser browser = new WebBrowser();
browser.ScriptErrorsSuppressed = true; //not necessesory you can remove it
browser.DocumentText = content;
browser.Document.OpenNew(true);
browser.Document.Write(content);
browser.Refresh();

HtmlDocument doc = browser.Document;

content是包含我提取的源代码的字符串。selectedDoc只是我要作为参数发送的doc

c# html html-parsing
1个回答
0
投票

我想我已经找到问题了。似乎我开始处理HTML文档太快了。由于我必须将其加载到浏览器中才能生成HTML文档,因此我需要给它足够的时间以完全加载文档。

所以我添加了DocumentCompleted事件处理程序,以便仅在文档加载后才处理HTML文档,现在我在Article元素中获得了子元素。

private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
     WebBrowser browser = (WebBrowser)sender;
     HtmlDocument doc = browser.Document;
     processSourceCode(doc);
}
© www.soinside.com 2019 - 2024. All rights reserved.