【发布时间】:2013-02-25 13:49:20
【问题描述】:
谁能给我一些建议?我目前有一个正在使用的列表框,在列表框中有来自任何网站的图像列表。它们是通过这种方法从网站上抓取的
Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
Dim PageElements As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("img")
For Each CurElement As HtmlElement In PageElements
imagestxt.Items.Add(imagestxt.Text & CurElement.GetAttribute("src") & Environment.NewLine)
Next
Timer1.Enabled = True
End Sub
然后我使用图片控制的方法来获取图片并显示出来。
pic1.Image = New Bitmap(New MemoryStream(New WebClient().DownloadData(imagestxtimagestxt.SelectedItem.ToString))).SelectedItem.ToString)))
此方法从 HTML 中提取图像和标题。
Private Function StrHTML12() As Boolean
Dim htmlDocument As HtmlDocument = WebBrowser1.Document
ListBox1.Items.Clear()
For Each element As HtmlElement In htmlDocument.All
ListBox1.Items.Add(element.TagName)
If element.TagName.ToUpper = "IMG" Then
imgtags.Items.Add(element.OuterHtml.ToString)
End If
If element.TagName.ToUpper = "TITLE" Then
titletags.Items.Add(element.OuterHtml.ToString)
Timer1.Enabled = False
End If
Next
End Function
这是一种计数方法,用于计算页面上有多少空alt=""或空img alt=''。
基本上我想做的是;
有一个可以检查图像的程序,查看alt='' 或img alt='' 如果在网站上开发人员没有在 alt 标记中添加任何内容我希望图像显示在图片框中并且我想要alt标签要么在它旁边,要么在它下面或其他东西。但我不知道怎么做。
counter = InStr(counter + 1, strHTML, "<img alt=''")
counter = InStr(counter + 1, strHTML, "alt=''")
counter = InStr(counter + 1, strHTML, "alt=""")
上面看起来真的很慢而且很乱。有没有更好的方法?
【问题讨论】:
-
你不能用
HtmlElement.GetAttribute("alt")吗?你几乎可以像你的第一个代码示例一样做同样的事情 -
这样做有什么好处?
-
您可以循环遍历 Dom 节点以查看
alt是否存在或具有空值,而不是使用字符串函数。可能需要澄清你的问题,因为我不确定你想要什么。 -
请您描述一下您要达到的目标,最终结果。 (将其添加到问题的底部)
-
最终目标是找出给定 HTML 文档中有多少个空 ALT 标记。需要找到这些标签,将图像的 src 显示在 datagridview 控件中并进行计数,以便可以通过将生成的报告给出反馈。
标签: html .net winforms listbox webbrowser-control