在vb.net里如何编写程序分析网页上的元素?

chenxi_aji 2011-02-06 11:15:43
比如我想获取http://www.getprice.com.au/Browse-Categories.htm这个页面上的所有分类信息,读取后存成一个文件。程序应该怎么写?

有人说是用webbrowser控件,能否给出一些具体的步骤?

谢谢!
...全文
141 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenxi_aji 2011-02-16
  • 打赏
  • 举报
回复
谢谢!顺求另两个问题!
vb100 2011-02-11
  • 打赏
  • 举报
回复

Public flag As Boolean
'在WebBrowser的WebBrowser2_DocumentCompleted事件里写
flag = True



'其他地方
flag = False
Do Until flag
Application.DoEvents
Loop


chenxi_aji 2011-02-11
  • 打赏
  • 举报
回复
up一下。求助!
chenxi_aji 2011-02-08
  • 打赏
  • 举报
回复
刚才我在WebBrowser的WebBrowser2_DocumentCompleted事件里写了一些代码。初步实现了一些功能。以此抛砖引玉
Dim hd As HtmlDocument
Dim cn1, cn2 As String

hd = WebBrowser2.Document
For Each subElement As HtmlElement In hd.GetElementsByTagName("div")
cn1 = subElement.GetAttribute("ClassName")
If cn1 = "categories" Then
For Each cat As HtmlElement In subElement.GetElementsByTagName("div")
cn2 = cat.GetAttribute("ClassName")
If cn2 = "titles" Then
TextBox1.Text = TextBox1.Text + cat.InnerText
End If
Next
End If
Next

又引出一些问题
1,要获取形如div class="xxxx"这样的元素除了用GetAttribute("ClassName")获取class字符串外还有什么其他的方法?有人说可以用正则表达式匹配,能给出几个例子吗?我觉得这应该更优雅。

2,程序必须等待webbrowser加载完,在documentComplete事件里处理。有什么优雅的方式可以让程序顺序等待webbrowser加载完然后执行其他代码?

3,我找了半天textbox.lines和textbox.text属性居然找不到类似delphi里stringlist.add的方法从而无法一行行加载字符串进textbox,求解。。。。。
vb100 2011-02-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chenxi_aji 的回复:]

多谢各位。
我一开始在程序里写:
Dim hd As HtmlDocument
WebBrowser1.Navigate("http://www.getprice.com.au/Browse-Categories.htm")
hd = WebBrowser2.Document

但是跟踪后发现hd = nothing

请问我是不是漏了什么步骤?
[/Quote]

网页没有加载完.
wuyq11 2011-02-07
  • 打赏
  • 举报
回复
获取网页内容,正则提取也可
chenxi_aji 2011-02-07
  • 打赏
  • 举报
回复
sorry
写错
应该是
hd = WebBrowser1.Document
chenxi_aji 2011-02-07
  • 打赏
  • 举报
回复
多谢各位。
我一开始在程序里写:
Dim hd As HtmlDocument
WebBrowser1.Navigate("http://www.getprice.com.au/Browse-Categories.htm")
hd = WebBrowser2.Document

但是跟踪后发现hd = nothing

请问我是不是漏了什么步骤?
threenewbee 2011-02-06
  • 打赏
  • 举报
回复
正则表达式提取网页元素。
wuyq11 2011-02-06
  • 打赏
  • 举报
回复
获取元素
For Each element As HtmlElement In WebBrowser1.Document.GetElementsByTagName("div")
For Each subElement As HtmlElement In element.GetElementsByTagName("input")
If subElement.GetAttribute("value") = 1 Then

End If
Next
Next

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧