我想获取某网页中深度为3的网页超链接,可以使用什么样的方法呢?
比如网页11中有超链接网页21、网页22、网页23。
网页21的超链接31、超链接32、超链接33.
网页22的超链接34、超链接35、超链接36.
网页23的超链接37、超链接38、超链接39.
我现要想要的功能是输入网页11的地址,便可获得31~39的地址。 
_____________________________________________________
现在的可以提取到21、22、23了,是通过把网页11放在WebBrowser中,并且事件放在Webbrowser的DocumentComplete(下载结束后)。这个方法虽然可以提取深度2的超链接,可是无法提取深度3的,总不能把深度2的超链接再一个一个的放在Webbrowser中去循环读取出深度3的地址来吧。假如使用循环的话,怎么才能控制DocumentComplete结束后才Next呢?

解决方案 »

  1.   

    只有循环提取。
    不要用 DocumentComplete 来判断,
    取到值后,就可以直接用WebBrowser来打开新地址,再读取下一级链接
      

  2.   

    为什么不要用 DocumentComplete 来判断呢?
    看标题还以为楼主说的是套了几层iframe呢
      

  3.   

    可是如果取到的值有很多呢,如何直接用Webbrowser打开新地址?直接打开第1个可以,那何时打开第2个、第3个……呢?
      

  4.   

    DocumentComplete 要等到页面都加载完毕才会触发,会很慢
    而在DocumentComplete  之前页面上已经有所需要的数据了,能够读到就不必在等了。
      

  5.   


    Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    For Each sform In WebBrowser1.Document.links
      List1.AddItem sform
    Next
    End Sub原本是把这个代码写在DocumentComplete中,现在应该写在哪里呢?
      

  6.   

    Dim dmt As HTMLDocument,下一页 as string下一页= 网页11
    ''''##########
    do 
     Webbrowser1.Navigate2 下一页
    on error resume next 
    do
    set dmt = WebBrowser1.Document
    下一页 =""
    下一页  = dmt.links(2).value
    if 下一页 <> "" then exit do
    DoEvents
    loop
    '处理 links 判断处理是否 exit loop
    loop
    ''###########分太少,代码比较繁琐,大概就这个意思,这个代码只取 33,36,39
    你自己修改一下,应该在处理 links 处还要一层循环
      

  7.   

    WebBrowser1_DocumentComplete 事件要注释掉