VB操作网页

northwolves 2009-07-24 04:42:57
VB6 使用webbrowser 或 xmlhttp 如何取得http://diamonds.com/Main/SearchResult.aspx?CaratSizeFrom=0&CaratSizeTo=100&shape=round 第10页的源代码?
...全文
417 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
无·法 2009-07-27
  • 打赏
  • 举报
回复
Option Explicit

Dim clsWeb1 As New clsWebMaster

Private Sub Form_Load()
WebBrowser1.Navigate "http://diamonds.com/Main/SearchResult.aspx?CaratSizeFrom=0&CaratSizeTo=100&shape=round"
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Static isOk As Boolean
If isOk Then
MsgBox WebBrowser1.Document.body.INNERHTML
Exit Sub
End If

If clsWeb1.IsTagExist(WebBrowser1, "A", eHREF, "Page$10", , False) Then
clsWeb1.ClickTag WebBrowser1, "A", eHREF, "Page$10", , False
isOk = True
Else
clsWeb1.ClickTag WebBrowser1, "A", eINNERHTML, "..."
End If
End Sub

需要引用一个dll,下载地址:http://commonprogrames.googlecode.com/files/WebMasterDemo.rar
无·法 2009-07-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 dingyanwei 的回复:]
楼上中用到的那个dll不知道有没有使用限制,我的意思是有没有试用期限制或禁止商业发布等。
[/Quote]
dingyanwei 2009-07-27
  • 打赏
  • 举报
回复
楼上中用到的那个dll不知道有没有使用限制,我的意思是有没有试用期限制或禁止商业发布等。
lyserver 2009-07-24
  • 打赏
  • 举报
回复
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim link As Object

Set link = Me.WebBrowser1.Document.getElementsByTagName("A")(89)
If link.innerText = "..." Or link.innerText = "10" Then
link.Click
Else
MsgBox Me.WebBrowser1.Document.body.innerHTML
End If
End Sub
supergreenbean 2009-07-24
  • 打赏
  • 举报
回复
出错时因为那个页面上没有 Page$10 这个东西, 所以,先翻到有Page$10的页面,再调用Page$10

Private Sub Form_Load()
WebBrowser1.Navigate2 " http://diamonds.com/Main/SearchResult.aspx?CaratSizeFrom=0&CaratSizeTo=100&shape=round"
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Static lStep As Long

If lStep = 2 Then Exit Sub

Dim oWindow As HTMLWindow2
Set oWindow = pDisp.Document.parentWindow

Select Case lStep
Case 0
oWindow.execScript "javascript:__doPostBack('ctl00$cphMainContent$gvSearchResult','Page$6')"
Case 1
oWindow.execScript "javascript:__doPostBack('ctl00$cphMainContent$gvSearchResult','Page$10')"
End Select

lStep = lStep + 1
End Sub
northwolves 2009-07-24
  • 打赏
  • 举报
回复
WebBrowser2.Navigate "http://diamonds.com/Main/SearchResult.aspx?CaratSizeFrom=0&CaratSizeTo=100&shape=round", False
While WebBrowser2.Busy
DoEvents
Wend
WebBrowser2.Navigate "javascript:__doPostBack('ctl00$cphMainContent$gvSearchResult','Page$10')"

返回同样错误
northwolves 2009-07-24
  • 打赏
  • 举报
回复
WebBrowser2.Navigate "http://diamonds.com/Main/SearchResult.aspx?CaratSizeFrom=0&CaratSizeTo=100&shape=round", False
While WebBrowser2.Busy
DoEvents
Wend
WebBrowser2.Navigate "javascript:__doPostBack('ctl00$cphMainContent$gvSearchResult','Page$10')"

返回同样错误
northwolves 2009-07-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lyserver 的回复:]
修改哪些项目提交后表示第10页?我没找到page之类的单词。
[/Quote]
这个函数返回的:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
lyserver 2009-07-24
  • 打赏
  • 举报
回复
修改哪些项目提交后表示第10页?我没找到page之类的单词。
northwolves 2009-07-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dingyanwei 的回复:]
的确有难度,试图通过url直接传值被系统阻止,看来只能通过form提交才能获得合法认证了。
[/Quote]


WebBrowser1.Document.All("__EVENTTARGET").Value = "ctl00$cphMainContent$gvSearchResult"
WebBrowser1.Document.All("__EVENTARGUMENT").Value = "Page$10"
WebBrowser1.Document.Forms("aspnetForm").submit

返回同样的错误
northwolves 2009-07-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sysdzw 的回复:]
直接修改此a标签为的内容,第一页的比如是javascript:__doPostBack('ctl00$cphMainContent$gvSearchResult','Page$1'),你改成javascript:__doPostBack('ctl00$cphMainContent$gvSearchResult','Page$10'),然后再去点击这个链接

如果要一页页的点也可以,不过得精确了,模拟实际操作,一直点到“10”,遇到“。。。”也照点

另外再一个就是直接抓包,看看它是跟服务器怎么交互的,如果有个中间的数据文件最好了,这样就可以直接xmlhttp直接取得了。
[/Quote]
返回:
We're sorry, but an Unexpected Error has occurred.


Click here to go back.
dingyanwei 2009-07-24
  • 打赏
  • 举报
回复
的确有难度,试图通过url直接传值被系统阻止,看来只能通过form提交才能获得合法认证了。
无·法 2009-07-24
  • 打赏
  • 举报
回复
直接修改此a标签为的内容,第一页的比如是javascript:__doPostBack('ctl00$cphMainContent$gvSearchResult','Page$1'),你改成javascript:__doPostBack('ctl00$cphMainContent$gvSearchResult','Page$10'),然后再去点击这个链接

如果要一页页的点也可以,不过得精确了,模拟实际操作,一直点到“10”,遇到“。。。”也照点

另外再一个就是直接抓包,看看它是跟服务器怎么交互的,如果有个中间的数据文件最好了,这样就可以直接xmlhttp直接取得了。

1,502

社区成员

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

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