Foxtable(狐表)用户栏目专家坐堂 → 应要求.自动操作网页以及获取网页数据.详细例子放出来了!(更新使用事件实现以及详细中文注译讲解)


  共有120649人关注过本帖树形打印复制链接

主题:应要求.自动操作网页以及获取网页数据.详细例子放出来了!(更新使用事件实现以及详细中文注译讲解)

帅哥哟,离线,有人找我吗?
don
  31楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12951 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/5/14 14:02:00 [只看该作者]

另早几天 用 hec(i).OuterHtml分析出以下字符串是可以作为Network.DownloadFileaddress参数下载文件的,今天又不行了,不知为何?

http://219.90.138.190/discuz/attachment.php aid=ODY0fDZhNjdjZmYxfDEzNjc3MjAwNDh8YzBkYWZBZE9IU3ZRM0xJRzdWdUovcUFwNm10UysrWjVwUUtWYSs0U1FRQmF0NGs%3D

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  32楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35437 积分:178494 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/5/14 14:11:00 [只看该作者]

地址变动了吧?分析是否包含 "discuz/attachment.php?aid=" 这段比较好.因为其他是可变的.   顺便也要确保 当前页面没有另外一个A标签包含相同的 字符串

 回到顶部
帅哥哟,离线,有人找我吗?
don
  33楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12951 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/5/14 14:16:00 [只看该作者]

没错,因我把字符串复制到浏览器输入框,回车是可以下载的

 回到顶部
帅哥哟,离线,有人找我吗?
don
  34楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12951 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/5/14 14:32:00 [只看该作者]

请教Bin老师:

用hec(i).InvokeMember("click") 下载文件会弹出一个 [检视下载]窗口,

能否不出现这个[检视下载]窗口,直接下载文件到指定路径?

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  35楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35437 积分:178494 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/5/14 15:29:00 [只看该作者]

你确定可以吗?这种方式Network.DownloadFile应该无法实现吧.刚我测试了一下狐表论坛的文件都下载失败. 你确定之前是可以的吗? 理论上来说是不可能的.



 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  36楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35437 积分:178494 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/5/14 15:32:00 [只看该作者]

你这样还是必须使用WEBREQUEST的.

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  37楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35437 积分:178494 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/5/14 15:39:00 [只看该作者]

Try
    Dim Myrq As System.Net.HttpWebRequest = DirectCast(System.Net.HttpWebRequest.Create("http://www.foxtable.com/bbs/viewFile.asp?BoardID=2&ID=29891"), System.Net.HttpWebRequest)
    Dim myCookieContainer As New System.Net.CookieContainer()
    Dim WebBrowser1 As System.Windows.Forms.WebBrowser=Forms("窗口1").Controls("WebBrowser1").BaseControl
    Dim cookieStr As String = WebBrowser1.Document.Cookie
    Dim cookstr As String() = cookieStr.Split(";"c)
    For Each str As String In cookstr
        If str.Contains("SESSION") Then
            Dim cookieNameValue As String() = str.Split("="c)
            Dim ck As New System.Net.Cookie(cookieNameValue(0).Trim().ToString(), cookieNameValue(1).Trim().ToString())
            ck.Domain = "www.foxtable.com"
            '必须写对
            myCookieContainer.Add(ck)
        End If
    Next
    Myrq.CookieContainer = myCookieContainer
    Dim myrp As System.Net.HttpWebResponse = DirectCast(Myrq.GetResponse(), System.Net.HttpWebResponse)
    Dim totalBytes As Long = myrp.ContentLength
    Dim st As System.IO.Stream = myrp.GetResponseStream()
    Dim so As System.IO.Stream = New System.IO.FileStream("C:\test123.foxdb", System.IO.FileMode.Create)
    Dim totalDownloadedByte As Long = 0
    Dim by As Byte() = New Byte(1023) {}
    Dim osize As Integer = st.Read(by, 0, CInt(by.Length))
    While osize > 0
        totalDownloadedByte = osize + totalDownloadedByte
        Application.DoEvents()
        so.Write(by, 0, osize)
        osize = st.Read(by, 0, CInt(by.Length))
    End While
    so.Close()
    st.Close()
    MessageBox.Show("下载完毕!", "下载提示:", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1)
Catch ex As Exception
    MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1)
End Try

配合WebBrowser获得SeSSION 可以满足你需求了.
[此贴子已经被作者于2013-5-14 15:40:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
don
  38楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12951 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/5/14 15:49:00 [只看该作者]

以下是引用Bin在2013-5-14 15:29:00的发言:
你确定可以吗?这种方式Network.DownloadFile应该无法实现吧.刚我测试了一下狐表论坛的文件都下载失败. 你确定之前是可以的吗? 理论上来说是不可能的.
======================================================

不大清楚了,可能把手工下载的文件,当作Network.DownloadFile下载的了.

请教能否通过打开 一个文件夹(如D:\aa) ,然后通过SendKeys在文件夹的搜索栏输入"AAAAA"及回车?



 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  39楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35437 积分:178494 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/5/14 15:50:00 [只看该作者]

以下是引用don在2013-5-14 15:49:00的发言:

给你发了WEBREQUST的例子代码.自己参考这做就好了.想怎么样就怎么样.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:网页分析以及自动化处理(商业版).table


[此贴子已经被作者于2013-5-14 15:53:54编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
don
  40楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12951 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/5/14 15:57:00 [只看该作者]

以下是引用Bin在2013-5-14 15:50:00的发言:

给你发了WEBREQUST的例子代码.自己参考这做就好了.想怎么样就怎么样.
 下载信息  [文件大小:488.0 KB  下载次数:0]
图片点击可在新窗口打开查看点击浏览该文件:网页分析以及自动化处理(商业版).table

多谢Bin!
[此贴子已经被作者于2013-5-14 15:53:54编辑过]


 回到顶部
总数 973 上一页 1 2 3 4 5 6 7 8 9 10 下一页 ..98