http://17s.cm/task_list.php?task_ex=1  这个网页一打开就先出个框说数据加载中,然后等一下才出现内容,我用vb的Private Sub Command1_Click()    Dim obj
    Set obj = CreateObject("Microsoft.XMLHTTP")
    
    obj.Open "GET", "http://17s.cm/task_list.php?task_ex=1", False
   obj.setRequestHeader "User-Agent", " Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CNCDialer; QQDownload 627; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"
    obj.Send
Text1.Text = obj.responseTextEnd Sub
这个代码去得源码,但是得到的是一些别的源代码,想要的数据却没有,请问该怎么办啊?

解决方案 »

  1.   

    刚用最笨的方法,实现了,但花了不少时间,不小心点了关闭没保存了
    比较复杂我的方法这样。
    1、用ie控件,默认隐藏,大小为180px*180px,WebBrowser1.Navigate "http://17s.cm/task_list.php?task_ex=1"
    2、用 WebBrowser1_StatusTextChange(ByVal Text As String)事件,判断当Text="完毕"时取数据。WebBrowser1.Visible = True
    Clipboard.Clear
    3、取数据思路也比较复杂
     a、使用SetCursorPos把鼠标定位在ie位置上。页面左上角空白处。不要点到页面中的链接或按钮就行。SetCursorPos Me.Left/15+WebBrowser1.Left/15+10,Me.Top/15+WebBrowser1.Top+30
     b、发送单击事件  mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTDOWN, px, py, 0, 0
      mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTUP, px, py, 0, 0
     c、发送ctrl+a事件  keybd_event vbKeyControl, 0, KEYEVENTF_EXTENDEDKEY Or 0, 0
      keybd_event 97, 0, KEYEVENTF_EXTENDEDKEY Or 0, 0
      keybd_event 97, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
      keybd_event vbKeyControl, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
     d、发送ctrl+c事件  keybd_event vbKeyControl, 0, KEYEVENTF_EXTENDEDKEY Or 0, 0
      keybd_event 99, 0, KEYEVENTF_EXTENDEDKEY Or 0, 0
      keybd_event 99, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
      keybd_event vbKeyControl, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
     e、然后直接使用VB.Clipboard.GetText取值。
      

  2.   

    网页使用ajax技术,楼主你那方法无法取得数据提。
      

  3.   

    完整vb代码
    Option Explicit
    Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As LongPrivate Declare Sub mouse_event Lib "user32" (ByVal dwflags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwflags As Long, ByVal dwExtraInfo As Long)Private Const MOUSEEVENTF_MOVE = &H1
    Private Const MOUSEEVENTF_LEFTDOWN = &H2Private Const MOUSEEVENTF_LEFTUP = &H4
    Private Const MOUSEEVENTF_ABSOLUTE = &H8000
    Private Const KEYEVENTF_EXTENDEDKEY = &H1
    Private Const KEYEVENTF_KEYUP = &H2Dim flg As BooleanPrivate Sub Form_Load()
        WebBrowser1.Width = 60
        WebBrowser1.Height = 60
    End SubPrivate Sub labGet_Click()
        flg = True
        Clipboard.Clear
        WebBrowser1.Navigate "http://17s.cm/task_list.php?task_ex=1"
        'WebBrowser1.Navigate "http://localhost/in"
    End SubPrivate Sub WebBrowser1_StatusTextChange(ByVal Text As String)
        If Text = "完毕" And flg = True Then
            flg = False
            Text1.Text = getDate
        End If
    End SubPrivate Function getDate() As String
        SetCursorPos Me.Left / 15 + WebBrowser1.Left / 15 + 7, Me.Top / 15 + WebBrowser1.Top / 15 + 32
        DoEvents    mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
        mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
        DoEvents    keybd_event vbKeyControl, 0, KEYEVENTF_EXTENDEDKEY Or 0, 0
        keybd_event 65, 0, KEYEVENTF_EXTENDEDKEY Or 0, 0
        keybd_event 65, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
        keybd_event vbKeyControl, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
        DoEvents    keybd_event vbKeyControl, 0, KEYEVENTF_EXTENDEDKEY Or 0, 0
        keybd_event 67, 0, KEYEVENTF_EXTENDEDKEY Or 0, 0
        keybd_event 67, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
        keybd_event vbKeyControl, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
        DoEvents
        getDate = VB.Clipboard.GetText
    End Function