• 新浪微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.05
软件大小:21.6M
更新时间:07-04

按键精灵安卓版
立即下载

软件版本:3.3.1
软件大小:62.5M
更新时间:5-24

按键精灵iOS版
立即下载

软件版本:1.3.5
软件大小:29.2M
更新时间:06-14

最新企业版UiBot
立即下载

软件版本:3.3
软件大小:282M
更新时间:08-06

快捷导航

登录 后使用快捷导航
没有帐号? 注册

登录 注册
返回列表 12345678» / 11
发新话题 回复该主题

[技术交流] 【院刊】-【201505期】正则实战——轻松完成论坛贴吧一键登录签... [复制链接]

1#

正则实战-论坛贴吧一键签到



本文按键学院提供技术支持



按键学院交流群(1群已满):376122403

零基础学按键精灵群(2群):372671254



前两篇的正则系列的院刊,已经给童鞋们初步介绍和讲解了关于正则的使用方法和一些技巧。
只要10行代码!从上万行文本中提取任意想要的信息
万千军中直取首级的正则进阶,想不想学
通过这两篇的院刊,相信大家已经能初步的了解了正则的使用了。
那今天,小编就结合POST的方法来叫大家一些实用的功能,让童鞋们更清楚正则要用在什么地方、该怎么用

POST和正则


记得在第一篇正则系列院刊的时候就和童鞋们说过,正则和POST是一对好基 友。

因为通过POST和GET方法得到的网页全是源文件,想要得到里面的信息的话就需要配合正则表达式来提取(虽然也可以用len、mid之类的函数配合提取。但是太复杂繁琐)
而正则表达式最大的好处就在能够从庞大复杂的文本里,精确的提取出想要的信息。



实战范例


我们这里就已制作一个按键论坛的登录和签到的脚本并且获取账号部分信息为范例,给大家介绍下正则表达式的用法

思路:
1、先使用POST方法在按键论坛上登录账号和密码
2、使用GET的方法进行签到
3、使用正则表达式,提取网页上的信息(既是账号的一些信息)


1、使用POST方法进行登录账号
  1. //先把需要登录的账号和密码进行赋值到变量
  2. 账号 = ""
  3. 密码 = ""
  4. //发送账号登录请求的地址,以及POST请求的内容
  5. 登录 = "http://bbs.anjian.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1"
  6. 登陆头信息 = "username=" & 账号 & "&password=" & 密码 & "&quickforward=yes&handlekey=ls"
  7. Set http = CreateObject("WinHttp.WinHttpRequest.5.1") '创建对象
  8. http.open "POST", 登录, False
  9. http.setrequestheader "Content-Type","application/x-www-form-urlencoded" //加上2个header
  10. http.setrequestheader "Content-Length",len(登陆头信息) //用函数取字符串长度
  11. http.send 登陆头信息//发送请求,带着内容
复制代码
上面这段代码就是通过POST的方法登录登录账号信息,但是想要完成登录还不止这一步,因为在登录之后论坛并不是直接进入了首页,而是需要经过一个跳转,这种跳转在使用POST的时候是不会自动进行的,所以我们需要使用GET方法再进一次首页
  1. http.open "GET", 首页, false
  2. http.send
  3. If instr(http.responsetext, 账号) Then
  4. MessageBox "登录成功"
  5. End If
复制代码
进入首页后查找源代码中是否有需要登录的账号字符串,如果有,就说明已经成功的登录了。

2、签到部分
账号签到部分我们直接使用GET的方法,只要找到签到的请求链接就行了
  1. 签到 = "http://bbs.anjian.com/plugin.php?id=dsu_amupper:pper&ppersubmit=true&formhash=97df5d05&infloat=yes&handlekey=dsu_amupper&inajax=1&ajaxtarget=fwin_content_dsu_amupper"
  2. http.open "GET", 签到, false
  3. http.send
复制代码
使用GET方法获取一次这个签到链接之后,这个账号就签到完成了

3、接下来就是通过正则的方式,来获取到这个账号的相应的信息了
这里已获取账号的用户组,还有积分为范例。
登录按键论坛首页后,右击网页,选择查看源代码,就能查看到这个网页的源码了。
接着我们找到和用户组相关的那段源码

在这段源码中我们真正需要提取的是“小学一年级” 这段字符,
那正则表达式就可以这样写 “showUpgradeinfo\)">(.+)”
(.+) 这个就表示我们需要提取出来的字段。前面的showUpgradeinfo\)"> 以及后面的 部分,都是为了把他和整个页面的代码区服开来,防止获取到其他无关的部分。

获取到用户组之后,我们还可以获取下账号的积分
同样,我们找到他对应的源代码:

我们需要获取的是”积分: 6“ 这个字段,那这个表达式就比较好写了
正则表达式:积分: \d+
这样就能直接获取到这个账号的积分了。
现在已经把表达式分析出来,那只要套用上正则的代码,就可以输出这写信息了

完整代码
  1. 登录 = "http://bbs.anjian.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1"
  2. 首页 = "http://bbs.anjian.com/forum.php"
  3. 签到 = "http://bbs.anjian.com/plugin.php?id=dsu_amupper:pper&ppersubmit=true&formhash=97df5d05&infloat=yes&handlekey=dsu_amupper&inajax=1&ajaxtarget=fwin_content_dsu_amupper"
  4. 登陆头信息 = "username=" & 账号 & "&password=" & 密码 & "&quickforward=yes&handlekey=ls"
  5. //发送账号登录请求的地址,以及POST请求的内容

  6. Set http = CreateObject("WinHttp.WinHttpRequest.5.1") '创建对象
  7. http.open "POST", 登录, False
  8. http.setrequestheader "Content-Type","application/x-www-form-urlencoded" //加上2个header
  9. http.setrequestheader "Content-Length",len(登陆头信息) //用函数取字符串长度
  10. http.send 登陆头信息//发送请求,带着内容
  11. //打开首页
  12. http.open "GET", 首页, false
  13. http.send
  14. If instr(http.responsetext, 账号) Then
  15. MessageBox "登录成功"
  16. End If

  17. text = http.responsetext
  18. //进行签到
  19. http.open "GET", 签到, false
  20. http.send
  21. //使用正则匹配进行获取账号相关信息
  22. set regEx = New RegExp '创建一个RegExp对象
  23. regEx.[Global] = TRUE '设置全局可用性为TRUE,在需要更换此属性时,我会提醒你的。
  24. regEx.IgnoreCase = FALSE'设置区分大小写为FALSE,也就是不区分大小写了
  25. regEx.pattern = "showUpgradeinfo\)"">(.+)"'设置正则表达式
  26. Set matches = regEx.execute(text) '进行匹配
  27. For Each Match In Matches
  28. TracePrint "账号的用户组为:" & Match.SubMatches(0)
  29. Next
  30. regEx.pattern = "积分: \d+"
  31. Set matches = regEx.execute(text)'进行匹配
  32. For Each Match In Matches
  33. TracePrint "当前账号的积分为:" & Match
  34. Next
复制代码
后记

正则和POST的结合用法还有很多,他们的用处也是非常大,只要是想实现不开网页就进行获取网站信息之类的操作,都是可以通过这两个方法结合来实现。
上面这个范例还只是实现了单个账号的登录和签到,童鞋们可以自行的进行扩展,批量登录、签到,百度贴吧的登录、签到等等




正则表达式系列一:
showtopic.aspx?topicid=571764&forumpage=1&page=1

正则表达式系列二:
showtopic.aspx?topicid=572284&forumpage=1&page=1



院刊目录
showtopic.aspx?topicid=549014&forumpage=1&page=1



 



谢谢大家阅读,记得给小编送支花花 ! 顺手点个


[tr=rgb(143, 188, 143)]

按键精灵免费公开课

实战班:回合制通用教学火热报名

【听课对象】:对按键精灵感兴趣的同学们都可以来~
【上课地点】:零基础学按键精灵群(372671254)
【上课时间】:周天晚上19:30-21:00
【上课内容】:按键精灵脚本基础经验谈——图色命令

本期重点:回合制游戏--神武
学习时效:终生有效
上课时间:周2、周4、周6的 20:00--22:00
导师:工程师07
技术支持:果儿(院刊编辑)
点我进入按键学院报名啦 招生细节进群咨询招生办主任:2群-372671254(优先加入) 1群-376122403





本主题由 超级版主 n15976906190 于 2017/9/2 8:41:12 执行 审核主题 操作
按键学院免费交流群:376122403

按键学院招生计划
按键学院系统教程
2#

xuexi xuexi jiu shi you dian kan bu dong kan lai wo hai xu yao geng duo d xue xi a

3#

爱死你了 不用回复都可以看

4#

11111111111111111111111111111

5#

这个必须有

6#

谢谢你的教程!!!

7#

学无止境

接单,收徒,脚本辅助定制,Q:960502043
接单,收徒,脚本辅助定制,Q:960502043
接单,收徒,脚本辅助定制,Q:960502043
8#

终于找到了

9#

22222222222

10#


11#

谢谢分享。。。。。。。。

12#

电饭锅电饭锅

13#

支持

14#

学习一下0

定做各种脚本 有需要Q我379267797<font color="DarkOrchid"></font>
15#

1111111111

16#

看一看。学学

QQ836542817
承接各类脚本
价格公道,售后质量保证
17#

64646511

18#

回复看内容

19#

能不要回复吗?

20#

32133

发新话题 回复该主题