作者jackiechin (jackiechin)
看板Visual_Basic
标题Re: 请问我想要直接控制网页,但找不到方向
时间Mon Apr 3 10:36:48 2017
※ 引述《waiter337 (给开司一罐苏格登)》之铭言:
: 因为工作上的需求,我想写个小程式
: 我找个网页来练习
: https://login.104.com.tw/login.cfm?frombar=jbbar_login
: 这是104的登入网页
: 假设说,我想要在身份证字号 密码 输入值
: 会员登入click
: 因为我其他的电脑,没有装excel
: 想说我该从哪个软体下手
: 是vb6,.net,还是asp?
: 顺序是这样
: 1.手动开启ie网页
: 2.手动开启程式(程式会自动上私人云端伺服器抓资料,并放入程式中的资料库)
: 在程式中的资料库搜寻"登入资料"
: 选择想要用的登入资料
: 将资料用vb from上设定好的按钮触发传入ie网页
: 补充:
: 每次开启程式时,或者按下"F12"特定按钮,
: 程式本身会去我的云端伺服器,找资料库,下载最新资料,储存在程式内的资料库
: 平常在搜寻登入资料时,并不会上伺服器下载资料
: 如果搜寻出的登入资料,觉得有错,可以当下修改後按储存,
: 储存时,更新的资料会上传云端伺服器
: 因为我只有vba的底子
: vb只有很基础的认知,
: 想问几个问题
: 1.我该看哪些书
: 2.我该上网查哪些关键字
: 3.yotutbe中有没有相关的影片可供教学
: 如果有人愿意指引一下方向,一人300P 寄信 推文皆可算
: 3Q
给一个范例的流程,须要使用到Visual Studio 开一个WindowsForm专案来写
要注意post login原来网页有无包含到Hidden的栏位以及postURI是否会每次变动
以下为程式码:
---------------------------------------------------------
Dim URI As String = "
https://login.104.com.tw/login.cfm?frombar=jbbar_login"
Dim postURI As String = "
https://login.104.com.tw/act_login.cfm?qazplm=805266_898335_132674"
Dim userName As String = "myname"
Dim passWord As String = "mypassword"
Dim cookieContainer As New CookieContainer()
Dim outputStream As System.IO.Stream = Nothing
'Get Login页面
Dim request As HttpWebRequest = TryCast(WebRequest.Create(URI), HttpWebRequest)
request.Method = "GET"
request.KeepAlive = False
'接收回传的Login页面
Dim response As HttpWebResponse = TryCast(request.GetResponse(), HttpWebResponse)
Dim responseStream As System.IO.Stream = response.GetResponseStream()
Dim reader As New System.IO.StreamReader(responseStream, Encoding.UTF8)
Dim srcString As String = reader.ReadToEnd()
'自动填写并送出Login页面, 需要的参数名称要自行查阅网页原始码的输入框的name
Dim postString As String = "username={0}&password={1}"
postString = String.Format(postString,userName, passWord)
'转换Post String data为 Byte
Dim postData As Byte() = Encoding.ASCII.GetBytes(postString)
'设定Login Post的相关参数
request = TryCast(WebRequest.Create(postURI), HttpWebRequest)
request.Method = "POST"
request.KeepAlive = False
request.ContentType = "application/x-www-form-urlencoded"
request.CookieContainer = cookieContainer
request.ContentLength = postData.Length
'接收回传的Login资讯
response = TryCast(request.GetResponse(), HttpWebResponse)
responseStream = response.GetResponseStream()
reader = New System.IO.StreamReader(responseStream, Encoding.UTF8)
srcString = reader.ReadToEnd()
---------------------------------------------------------
透过程式登入的流程大致是这样,srcString 就是登入成功看到画面的网页原始码。
若登入後还需要多点很多层取得资料,基本上也可以仿照这个流程继续接着写
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.140.15.56
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Visual_Basic/M.1491187010.A.D78.html
※ 编辑: jackiechin (223.140.15.56), 04/03/2017 10:41:01
※ 编辑: jackiechin (223.140.15.56), 04/03/2017 10:47:24
1F:推 waiter337: 赞,顺便跟你说一下,当时我也找到相关的解法 04/22 02:26
2F:→ waiter337: 我当时只有回在office版,查同样的文章名称 04/22 02:27
3F:→ waiter337: 你的我要在研究研究,感觉更深入 04/22 02:27