嘿伙计们,我想知道如何在网页上使用C#获取所有元素。我在下面使用以下代码:
HtmlElementCollection collection = web.Document.GetElementsByTagName("img");
foreach(HtmlElement element in collection) {
//do my stuff with iterations
}
但是,该代码弹出此错误:
Specified cast is not valid.
我该如何正确地做到这一点?
答案 0 :(得分:1)
在foreach
之前设置断点。然后检查collection
中的类型。
我怀疑它可能需要一些基类HtmlElement
。
可替换地:
HtmlElementCollection collection = web.Document.GetElementsByTagName("img");
foreach(object e in collection) {
//do my stuff with iterations
var element = e as HtmlElement;
if (element == null)
Debug.Print("Type of e: {0}", e.GetType);
else
{
// ok
}
}
答案 1 :(得分:1)
您必须确保文档已完成加载,例如: G。此代码段
private void DisplayMetaDescription()
{
if (webBrowser1.Document != null) //the statement!
{
HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("META");
foreach (HtmlElement elem in elems)
{
//Some loop-stuff you propably want to do
}
}
}
来自MSDN的在if语句中执行此操作。
此Question可能也是相关的。
答案 2 :(得分:-1)
尝试使用var
代替HtmlElement
:
var collection = web.Document.GetElementsByTagName("img");
foreach(var element in collection) {
//do my stuff with iterations
}
然后,您可以将鼠标悬停在var
上的Visual Studio中,您将获得迭代器返回的实际类型。