我正在构建一个应用程序,以便能够从Instagram.com提取图像。我将源代码作为字符串获取,并将其转换为HTML文档,以便能够解析文档的正文。
在正常的摘要页面上,他们使用<article>
显示联系人的不同图片。因此,我将这篇文章用作提取信息的主要标签。
var articles = selectedDoc.GetElementsByTagName("article");
这返回了HTML元素集合中的三篇文章,但是,当我对其进行调试时,它们似乎都是空的。您可以在所附的屏幕截图中看到,innerHTML和innerText一样为空。
但是在源代码本身中,它一点也不为空,如您在源代码屏幕截图中所见。
有人知道为什么会这样吗?
***编辑根据要求:这是我设置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
。
我想我已经找到问题了。似乎我开始处理HTML文档太快了。由于我必须将其加载到浏览器中才能生成HTML文档,因此我需要给它足够的时间以完全加载文档。
所以我添加了DocumentCompleted
事件处理程序,以便仅在文档加载后才处理HTML文档,现在我在Article
元素中获得了子元素。
private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser browser = (WebBrowser)sender;
HtmlDocument doc = browser.Document;
processSourceCode(doc);
}