我想取出这个网页代码中的网址,可是不知道哪里出错了。

孤月残影 2009-08-07 11:17:24
我想取出这个网页代码中的网址,可是不知道哪里出错了。

这是网页代码:

<li id="webtext">

<span class="info">
1 / 300 webtexts sent
</span>
<a href="https://www.vodafone.ie/myv/messaging/webtext/index.jsp?ts=1249654997500">Webtext</a>


</li>

这是我的VB代码:

Private Sub Command1_Click()

Set doc = WebBrowser1.Document
Set body = doc.body
Set user = doc.getElementById("webtext")

Dim a

For Each a In user.links
 Debug.Print a.href
Next

Set body = Nothing
Set doc = Nothing
set user = Nothing

End Sub
...全文
155 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤月残影 2009-08-09
  • 打赏
  • 举报
回复
不要正则提取,用不着。上面的代码好是好,不过我想用另外一种方法实现,希望高手继续!!

这个原理跟网上的QQ验证码图片的地址提取差不多,不过我要提取的是唯一一个网址,楼上的代码也时会提取错误。

这是代码,不过需要补充完整,谢谢!



Private Sub Command1_Click()
Dim doc 'As HTMLDocument
Dim body 'As HTMLBody
Dim range 'As IHTMLControlRange
Dim img 'As IHTMLControlElement
Set doc = WebBrowser1.Document
Set body = doc.body
Set range = body.createControlRange

提示:就是这行代码最关键,我没有头绪:
Set img = doc.什么('webtext')
'------------------------------------------------------------------------------------------
'比如1: Set img = doc.images('webtext')
'比如2: Set img = doc.links('webtext')
'比如3: Set img = doc.getElementByID('webtext')
'------------------------------------------------------------------------------------------

Debug.Print img.href

Set img = Nothing
Set range = Nothing
Set body = Nothing
Set doc = Nothing
End Sub
fantasis 2009-08-09
  • 打赏
  • 举报
回复
Dim x
For Each x In WebBrowser1.Document.links
If Trim(LCase(x.innertext)) = "webtext" Then MsgBox x.href
Next

href是不带ID的吧?
孤月残影 2009-08-09
  • 打赏
  • 举报
回复
弱弱问个问题,怎么给你加分。
fantasis 2009-08-09
  • 打赏
  • 举报
回复
分呢?分呢?
孤月残影 2009-08-09
  • 打赏
  • 举报
回复
顶,楼上的,答案达到了效果。
fantasis 2009-08-09
  • 打赏
  • 举报
回复
你用getElementById("webtext")的话,返回的对象是li这个标签而不是A,没有href属性的,所以还要在返回的对象里getElementsByTagName("A")
getElementsByTagName得到的是元素组,哪怕只有1个
fantasis 2009-08-09
  • 打赏
  • 举报
回复
抱歉没看清楚。。。。

Dim x, y
Set x = WebBrowser1.Document.getElementById("webtext")
Set y = x.getElementsByTagName("A")
MsgBox y(0).href

这样呢?
孤月残影 2009-08-09
  • 打赏
  • 举报
回复
不是 innertext,是<li id="webtext">
fantasis 2009-08-09
  • 打赏
  • 举报
回复
你那个webtext是属于innertext吧?
貌似不能用来定义元素集合的
SYSSZ 2009-08-08
  • 打赏
  • 举报
回复
没看清要求,---抱歉!
SYSSZ 2009-08-08
  • 打赏
  • 举报
回复
Public Sub GetLinks()
Dim L As Integer
Dim i As Integer
Dim Varl As Variant
Set Doc = Me.WebBrowser1.Document
Set All = Doc.links
L = All.length
For i = 0 To L - 1
Set Varl = All.Item(i, varempty)
Debug.Print Varl.href
Set Varl = Nothing
Next i
Set All = Nothing
Set Doc = Nothing
End Sub

Private Sub Form_Load()
WebBrowser1.Navigate "http://WWW.hao123.COM"
End Sub

Private Sub WebBrowser1_DownloadComplete()
GetLinks
End Sub
无·法 2009-08-07
  • 打赏
  • 举报
回复
你取得user.innerhtml然后用字符串处理
无·法 2009-08-07
  • 打赏
  • 举报
回复
你取得user.innerhtml然后用字符串处理
孤月残影 2009-08-07
  • 打赏
  • 举报
回复
那个也太复杂了。不是有个唯一的id 值吗?
goosen 2009-08-07
  • 打赏
  • 举报
回复
'引用的是microsoft   vbscript   regular   expression   5.5
Function RegExpTest(patrn, strng) 'patrn:需要查找的字符 strng:被查找的字符串
Dim regEx, Match, Matches ' 创建变量。
Set regEx = New RegExp ' 创建正则表达式。
regEx.Pattern = patrn ' 设置模式。'"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"'
regEx.IgnoreCase = True ' 设置是否区分大小写。
regEx.Global = True ' 设置全程匹配。
Set Matches = regEx.Execute(strng) ' 执行搜索。
For Each Match In Matches ' 循环遍历Matches集合。
RetStr = RetStr & Match.Value & vbCrLf
Next
RegExpTest = RetStr
End Function


Private Sub Command1_Click()
Dim URLRegExp As String, MailRegExp As String, ChiniRegExp As String
Dim FileName As String, sFile As String, MuName As String, Chans As String
Dim i As Long, arr() As String, arr1() As String, arr2() As String

URLRegExp = "http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?" 'URL正则表达式
MailRegExp = "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" '电子邮件正则表达式
ChiniRegExp = "[^\x00-\xff]* "

Open "c:\temp.html" For Binary As #1
sFile = Space(LOF(1))
Get #1, , sFile
Close #1
Text1.Text = RegExpTest(URLRegExp, sFile)
End Sub

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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