小弟是菜鸟~刚刚接触vb没多久……现在想从www.fmrich.com 把板块的名字 和他的url地址拿下来放在一个listview 里面 我写了一段很搓的代码 一循环就不对 去除循环一个个拿都能的到 希望各位大虾能帮忙啊!
 代码很搓~~~ 变量名字都是中文拼音
Dim yuandaima
Private Sub Command1_Click()Inet1.Protocol = icHTTP
yuandaima = Inet1.OpenURL(Text1.Text)
Text3.Text = yuandaima
End SubPrivate Sub Command2_Click()
i = 1
Do While i < Len(yuandaima)
zifuweizhi = InStr(i, yuandaima, "<h2><a href=" + Chr(34) + "forum", vbTextCompare)
If zifuweizhi <> 0 Then
i = zifuweizhi
jiequ = Right(yuandaima, (Len(yuandaima) - zifuweizhi))
Dim itmx As ListItem
'获得title
fuhaoweizhi = InStr(1, jiequ, "</a></h2>", vbTextCompare)
jiequ2 = Mid(jiequ, 1, fuhaoweizhi - 1)
fuhaoweizhi2 = InStr(1, jiequ, Chr(34) + Chr(62), vbTextCompare)
biaoti = Right(jiequ2, (Len(jiequ2) - fuhaoweizhi2 - 1))
'获得url
urlweizhi = InStr(1, jiequ2, Chr(61) + Chr(34), vbTextCompare)
urljiequ = Right(jiequ2, (Len(jiequ2) - urlweizhi - 1))
fuhaoweizhi3 = InStr(1, urljiequ, Chr(34) + Chr(62), vbTextCompare)
urldizhi = Mid(urljiequ, 1, fuhaoweizhi3 - 1)
Set itmx = ListView1.ListItems.Add(, , biaoti)
itmx.SubItems(1) = Text1.Text + "/" + urldizhi
Else
MsgBox "循环结束", 48, "嘿嘿"
Exit Do
End If
Loop
End SubPrivate Sub Command3_Click()
End
End Sub
Private Sub Form_Load()
ListView1.View = lvwReport
ListView1.ColumnHeaders.Add , , "title"
ListView1.ColumnHeaders.Add , , "url"
End SubPrivate Sub Inet2_StateChanged(ByVal State As Integer)End Sub

解决方案 »

  1.   

    代码有点错误。其实我的意思就是想让以下这段代码循环起来 去取出www.fmrich.com 这个html页面里的板块信息和对应的url地址…… 但是我一写循环就变成死循环了……不知道逻辑那里错了…… ‘
    zifuweizhi = InStr(i + 1, yuandaima, "<h2><a href=" + Chr(34) + "forum", vbTextCompare)
    jiequ = Right(yuandaima, (Len(yuandaima) - zifuweizhi))
    Dim itmx As ListItem
    '获得title
    fuhaoweizhi = InStr(1, jiequ, "</a></h2>", vbTextCompare)
    jiequ2 = Mid(jiequ, 1, fuhaoweizhi - 1)
    fuhaoweizhi2 = InStr(1, jiequ, Chr(34) + Chr(62), vbTextCompare)
    biaoti = Right(jiequ2, (Len(jiequ2) - fuhaoweizhi2 - 1))
    '获得url
    urlweizhi = InStr(1, jiequ2, Chr(61) + Chr(34), vbTextCompare)
    urljiequ = Right(jiequ2, (Len(jiequ2) - urlweizhi - 1))
    fuhaoweizhi3 = InStr(1, urljiequ, Chr(34) + Chr(62), vbTextCompare)
    urldizhi = Mid(urljiequ, 1, fuhaoweizhi3 - 1)
    Set itmx = ListView1.ListItems.Add(, , biaoti)
    itmx.SubItems(1) = Text1.Text + "/" + urldizhi
    itmx.SubItems(2) = zifuweizhi代码不是很难啊。。就是字符串的操作 但是一循环就不对了!痛苦的等待中~~~
      

  2.   

      从源文件获得标题和过滤链接的代码
    Private Sub ParseLinksTITLE(HTMLText As String)
    Dim LinkStart As Integer
    Dim LinkEnd As Integer
    Dim FileSize As Long
    Dim DocTitle As String
    LinkStart = InStr(UCase(HTMLText), "<TITLE>")
    LinkStart = LinkStart + Len("<TITLE>")
    LinkEnd = InStr(UCase(HTMLText), "</TITLE>")
    DocTitle = Mid$(HTMLText, LinkStart, LinkEnd - LinkStart)
    Form1.Caption = DocTitle
       End Sub
      
    Private Sub ParseLinks(HTMLText As String)
    Dim LinkStart As Long
    Dim Linkstop As Long
    On Error Resume Next
    LinkStart = InStr(1, UCase(HTMLText), "HREF=")
    If LinkStart = 0 Then
        Exit Sub
    Linkstop = InStr(LinkStart, HTMLText, ">")End If
    Do While LinkStart <> 0
    URLname = Mid$(HTMLText, LinkStart, Linkstop - LinkStart)
    URLname = Trim(URLname)URLname = Right$(URLname, Len(URLname) - 6)
    URLname = Trim(URLname)
    q = Right$(URLname, 1)
    If q = Chr(34) Or q = Chr(39) Then
    URLname = Left$(URLname, Len(URLname) - 1)
    End If
    Form1.List1.AddItem URLname
     LinkStart = InStr(Linkstop, UCase(HTMLText), "HREF=")
      If LinkStart = 0 Then
      Exit Do
       End If
      Linkstop = InStr(LinkStart, HTMLText, ">", 1)
       Loop
    End SubPrivate Sub Command1_Click()
    Dim s As String
    Inet1.Protocol = icHTTP
    s = Inet1.OpenURL("www.fmrich.com")
    ParseLinks s
    End SubPrivate Sub Command2_Click()
    Dim s As String
    Inet1.Protocol = icHTTP
    s = Inet1.OpenURL("www.fmrich.com")ParseLinksTITLE s
    End Sub
      

  3.   


    我本来的思路就是 先拿到页面的源文件 然后寻找<h2><a href="forum 这个字符串 有的话就通过一系列的字符串操作把   财富之路           forum-4-1.html   ,项目与合作         forum-5-1.html 等拿出来  我不写循环都拿的出  但是一写 循环就变成死循环了 不知道那里错了  !
      

  4.   

    我就是循环不太清楚…… 代码究竟是怎么执行的……  我是本来是取 <h2> <a href="forum  取出后然后 把这个字符串前面的东西 全部去掉 然后在取 </a></h2> 在把这个后面的去掉 就剩下<h2><a href="forum-4-1.html">财富之路</a></h2>   问题是我现在想循环 拿到 <h2> <a href="forum   出现的位置……  就死循环 我想过有加判断 判断<h2> <a href="forum   出现位置的值 是不是为0 为0就跳出循环 结果一下就跳出循环……   我一用vb写循环就是死循环 不知道为什么用java 从来没有死过 郁闷!
      

  5.   

    思路不对,前后都去了,剩下的就是固定的字串了,不用循环了
    循环的思路是:
     找到一个<h2> <a href="forum,再找一个</a> </h2> 取出所需要的东西后.再从</a> </h2>后找下一个<h2> <a href="forum和下一个</a> </h2>再取出所要的东西,直到文件尾