获取网页上的所有<img/>元素

时间:2012-02-03 08:49:20

标签: c#

嘿伙计们,我想知道如何在网页上使用C#获取所有元素。我在下面使用以下代码:

HtmlElementCollection collection = web.Document.GetElementsByTagName("img");

foreach(HtmlElement element in collection) {
  //do my stuff with iterations
}

但是,该代码弹出此错误:

Specified cast is not valid.

我该如何正确地做到这一点?

3 个答案:

答案 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中,您将获得迭代器返回的实际类型。

最好的问候!