加一个webbrowser,listbox,commandbutton: 如当前登录的页面是sina的首页 sub command1_click() for i=0 to webbrowser1.document.links.length if instr(webbrowser1.document.links(i).href,"mail to")<>0 then list1.additem webbrowser1.document.links(i).href end if next end sub 自己测试一下, 我没有试过, 但基本思路是这样
Sub RecurseFr(HTMLDoc As HTMLDocument) If HTMLDoc Is Nothing Then ' Not an HTLM document Exit Sub End If Dim BODYElement As IHTMLElement Set BODYElement = HTMLDoc.body If BODYElement.tagName = "BODY" Then Dim ELEMENTCo As IHTMLElementCollection Set ELEMENTCo = HTMLDoc.links Dim Element As HTMLAnchorElement For Each Element In ELEMENTCo listlinks.AddItem (Element.href) Next End If Dim HTMLFrames As IHTMLFramesCollection2 Set HTMLFrames = HTMLDoc.frames Dim HTMLWnd As HTMLWindow2 For countFrames = 0 To HTMLFrames.length - 1 Set HTMLWnd = HTMLFrames(countFrames) Call RecurseFr(HTMLWnd.Document) Next Exit Sub MsgBox (Err.Description) End Sub Private Sub btnGetLinks_Click() On Error Resume Next Dim theControl As WebBrowser Set theControl = WebBrowser1 Dim HTMLDoc As HTMLDocument Set HTMLDoc = WebBrowser1.Document listlinks.Clear Call RecurseFr(HTMLDoc) End SubPrivate Sub btngoback_Click() WebBrowser1.GoBack End SubPrivate Sub btngofoward_Click() WebBrowser1.GoForward End SubPrivate Sub btnNavigate_Click() WebBrowser1.navigate (editNavURL) End SubPrivate Sub Form_Load() Dim DocEvents As HTMLDocument WebBrowser1.Navigate2 ("http://www.baidu.com") End Sub Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) Set DocEvents = Nothing listlinks.Clear editElement = "" editID = "" End SubPrivate Sub WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean) Select Case Command Case CSC_NAVIGATEBACK btngoback.Enabled = Enable Case CSC_NAVIGATEFORWARD btngoforward.Enabled = Enable End Select End Sub Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) On Error Resume Next If pDisp Is WebBrowser1.Object Then Set DocEvents = WebBrowser1.Document End If End Sub这是个getlinks 的例子, 你把element 改成'mailto:"就可以了!
不行的!我错了! 应该加个判断 element 里面有mailto: @ 的list additem
:~~D 够累~~~~
url 的抓取用些spider 可以做的来. htmldocument.links.length-1 来取得linkslist.additem然后再找email 不过我看advance email extractor 是用winsock 实现的,还是先抓文本,然后找@两面的东西。addlist 然后再删除重复的
如当前登录的页面是sina的首页
sub command1_click()
for i=0 to webbrowser1.document.links.length
if instr(webbrowser1.document.links(i).href,"mail to")<>0 then
list1.additem webbrowser1.document.links(i).href
end if
next
end sub
自己测试一下, 我没有试过, 但基本思路是这样
Sub RecurseFr(HTMLDoc As HTMLDocument) If HTMLDoc Is Nothing Then
' Not an HTLM document
Exit Sub
End If
Dim BODYElement As IHTMLElement
Set BODYElement = HTMLDoc.body
If BODYElement.tagName = "BODY" Then
Dim ELEMENTCo As IHTMLElementCollection
Set ELEMENTCo = HTMLDoc.links
Dim Element As HTMLAnchorElement
For Each Element In ELEMENTCo
listlinks.AddItem (Element.href)
Next
End If
Dim HTMLFrames As IHTMLFramesCollection2
Set HTMLFrames = HTMLDoc.frames
Dim HTMLWnd As HTMLWindow2
For countFrames = 0 To HTMLFrames.length - 1
Set HTMLWnd = HTMLFrames(countFrames)
Call RecurseFr(HTMLWnd.Document)
Next
Exit Sub
MsgBox (Err.Description)
End Sub
Private Sub btnGetLinks_Click()
On Error Resume Next
Dim theControl As WebBrowser
Set theControl = WebBrowser1
Dim HTMLDoc As HTMLDocument
Set HTMLDoc = WebBrowser1.Document
listlinks.Clear
Call RecurseFr(HTMLDoc)
End SubPrivate Sub btngoback_Click()
WebBrowser1.GoBack
End SubPrivate Sub btngofoward_Click()
WebBrowser1.GoForward
End SubPrivate Sub btnNavigate_Click()
WebBrowser1.navigate (editNavURL)
End SubPrivate Sub Form_Load()
Dim DocEvents As HTMLDocument
WebBrowser1.Navigate2 ("http://www.baidu.com")
End Sub
Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
Set DocEvents = Nothing
listlinks.Clear
editElement = ""
editID = ""
End SubPrivate Sub WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)
Select Case Command
Case CSC_NAVIGATEBACK
btngoback.Enabled = Enable
Case CSC_NAVIGATEFORWARD
btngoforward.Enabled = Enable
End Select
End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
On Error Resume Next
If pDisp Is WebBrowser1.Object Then
Set DocEvents = WebBrowser1.Document
End If
End Sub这是个getlinks 的例子, 你把element 改成'mailto:"就可以了!
[email protected]