拿本站的搜索功能为例,我们需要用到的是Chrome的f12抓包(别慌,不难,跟着一步步走也可以学会)、精益模块。
还有一些小工具,等会用到的时候再讲。
首先我们先抓包,看下载搜索时提交了什么东西
首先在网站的首页按f12打开开发工具,然后切换到network模式
然后我们在搜索框打上文字,点击搜索(我这里用的是“落叶”两个字)
点击之后,我们就可以看到刚刚抓到的包,可以在这里找到一些基本的信息(如提交地址啊什么的)还有需要提交的参数
(记住上图的RequestURL等会儿会用到)
搜索功能比较简单,只需要提交一个参数即可
找到需要的信息后,我们就开始写代码,首先设计下窗口,需要用到一个超文本浏览框用来展示搜索之后的信息
然后我们需要用到精益模块的“网页_访问_对象”这个函数(没得模块的去百度下载,直接搜索精益模块就有)
子程序名:网页_访问_对象
使用WinHttp的对象方式访问网页
返回值类型:字节集
参数<1>的名称为“网址”,类型为“文本型”。注明:完整的网页地址,必须包含http://或者https://。
参数<2>的名称为“访问方式”,类型为“整数型”,允许接收空参数数据。注明:0=GET 1=POST 2=HEAD 3=PUT 4=OPTIONS 5=DELETE 6=TRACE 7=CONNECT。
参数<3>的名称为“提交信息”,类型为“文本型”,允许接收空参数数据。注明:"POST"专用 自动UTF8编码。
参数<4>的名称为“提交Cookies”,类型为“文本型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:设置提交时的cookie。
参数<5>的名称为“返回Cookies”,类型为“文本型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:返回的Cookie。
参数<6>的名称为“附加协议头”,类型为“文本型”,允许接收空参数数据。注明:一行一个请用换行符隔开。
参数<7>的名称为“返回协议头”,类型为“文本型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:返回的协议头。
参数<8>的名称为“返回状态代码”,类型为“整数型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:网页返回的状态代码,例如:200;302;404等。
参数<9>的名称为“禁止重定向”,类型为“逻辑型”,允许接收空参数数据。注明:默认不禁止网页重定向。
参数<10>的名称为“字节集提交”,类型为“字节集”,允许接收空参数数据。注明:提交字节集数据。
参数<11>的名称为“代理地址”,类型为“文本型”,允许接收空参数数据。注明:代理地址,格式为 8.8.8.8:88。
参数<12>的名称为“超时”,类型为“整数型”,允许接收空参数数据。注明:秒|默认为15秒,-1为无限等待。
参数<13>的名称为“代理用户名”,类型为“文本型”,允许接收空参数数据。注明:用户名。
参数<14>的名称为“代理密码”,类型为“文本型”,允许接收空参数数据。注明:密码。
参数<15>的名称为“代理标识”,类型为“整数型”,允许接收空参数数据。注明:代理标识,默认为1,0为路由器。
参数<16>的名称为“对象继承”,类型为“对象”,允许接收空参数数据。注明:此处可自行提供对象,不再主动创建。
参数<17>的名称为“是否自动合并更新Cookie”,类型为“逻辑型”,允许接收空参数数据。注明:默认为真,自动合并更新。
参数<18>的名称为“是否补全必要协议头”,类型为“逻辑型”,允许接收空参数数据。注明:当附件协议头为空时自动添加必要的UA协议头 默认为真,假将不再添加非传入协议头。
参数<19>的名称为“是否处理协议头大小写”,类型为“逻辑型”,允许接收空参数数据。注明:将协议头中的键名首字母处理为大写 默认为真。
参数有点多但是不要慌,在搜索中能用到的只有前面三个参数,后面的等我们以后的文章中用到之后再讲
参数1为网址,即我们抓包抓到的request(上图有),我们可得知本站在搜索时request为:http://qq.luoyee.cn/search.php
参数2是提交方式,我们用到的是1(POST),其实网站可以用GET提交搜索,但我们主要现在使用POST,就先把GET略过
参数3是提交信息,我们在搜索时只需要用到一个参数:q=搜索内容
其他的参数我们这次暂且用不到
第一步:先取返回数据
为了方便我们声明一个变量:返回,类型为字节集
然后再声明一个变量:内容,类型为文本型,这个变量用来存放转码后的内容
首先我们需要先给 返回 这个变量赋值,用POST提交数据,然后将返回的数据赋值给他
在按钮被单击的子程序内首先写入以下内容
返回 = 网页_访问_对象 (“http://qq.luoyee.cn/zb_system/cmd.php?act=search”, 1, “q=” + 编辑框1.内容)
编辑框1即为我们输入搜索内容的地方
然后我们调试输出以下到文本(返回),可以发现我们得出了一堆乱码
我们需要搞清楚这是什么编码格式,这里推荐使用精益编程助手(懒得挂链接。。自行百度)(滑稽.gif)
然后我们使用解码工具,赋值乱码的其中一段进行解码
我们看到UTF8的时候是中文(我们能看懂),然后就可以基本确定是UTF8编码了
然后我们需要用到一个函数“编码_UTF8解码”,来看一眼提示
子程序名:编码_UTF8解码
直接返回宽字节 参考返回窄字节
返回值类型:字节集
参数<1>的名称为“UTF8数据”,类型为“字节集”。注明:待解码的UTF8格式编码数据。
参数<2>的名称为“文本数据”,类型为“文本型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:参考返回 文本数据。
他的意思也就是把参数1的字节集转换文本数据并赋值给参数2
我们参数1可以写刚刚的变量:返回
参数2就写变量:内容
编码_UTF8解码 (返回, 内容)
这下输出变量 内容 看到的就是赏心悦目的中文了
其实到这里,我们的POST请求就已经结束了,但是如果我们将这段代码直接扔给用户,那么用户是可能看不懂的(貌似肯定无法直接读懂),所以为了用户着想,我们可以考虑把返回的这段文本保存为一个html文件,然后在超文本浏览框中展示出来
.版本 2
.支持库 HtmlView
写到文件 (取运行目录 () + “c1.html”, 到字节集 (返回))
超文本浏览框1.地址 = 取运行目录 () + “c1.html”
然后我们的程序到这里就相当于写完了
.版本 2
.支持库 spec
.支持库 HtmlView
返回 = 网页_访问_对象 (“http://qq.luoyee.cn/zb_system/cmd.php?act=search”, 1, “q=” + 编辑框1.内容)
编码_UTF8解码 (返回, 内容)
调试输出 (到文本 (内容))
写到文件 (取运行目录 () + “c1.html”, 到字节集 (返回))
超文本浏览框1.地址 = 取运行目录 () + “c1.html”
其实还是非常简单的
暂无评论内容