Python3 编写的开机自动BUPT校园网登录脚本_第二版

上一篇已经做到可以实现开机自动登录的效果了,但是那个.bat脚本里显示的“登录成功”,只是一个摆设,并不
能判断出来的结果,所以这次加上判断,是否真的登录成功。
上一篇链接:https://blog.csdn.net/GG_band/article/details/84197668

以下----正文

  1. 新增加一个使用库,import re , 这个库是使用正则表达式的,我们使用正则表达式来寻找登录成功的页面里的“登录成功”四个字。
  2. 在第一版的py脚本里,已经可以实现登录了,所以我们要取回登录成功的页面,从而判断页面中是否出现“登录成功”这四个字。
      取页面,同样用到get的命令,要看清有可能登录成功后,跳转到一个新的页面去了,我们学校登录成功后的URL还是原来那个,所以不用改动,
      page = requests.get(url);
      使用 print(page.text) 可以输出这个页面的内容,然后内容复制下来,我们到一个可以模拟正则匹配的网页去,https://regex101.com/,这是一个很有用的工具。将复制的内容复制到Test String里,Regular Expression 就是写正则表达式的地方。
      在这里插入图片描述
      在这里插入图片描述
  3. 首先我们要先在Regular Expression这一栏输入“登录成功”,先找一下有没有这四个字。在这里插入图片描述
      可以看到右侧MATCH INFORMATION 那一栏完全匹配出了两处,可以直接点击跳转到那个位置,我们看到中间的位置“登录成功”一定被标蓝了,但这是我们想要取得内容,我们想在这个位置取到对应的内容就要用正则了。可以参考下面大佬的正则基础知识,我觉得挺详细的。 正则的知识其实很多的,我就不详细说了。

转自:博客园Mainz
  http://www.cnblogs.com/Mainz/archive/2009/03/14/1411359.html

在这里插入图片描述
  在这里,我先把“登录成功”前面的HTML的<h3 class="center title">写上,确定起始位置,之后的(.*),括号就是表示我们需要的内容,使用.*进行任意字符的贪婪匹配,这个时候他不知道取到哪截止,他会选中剩下的所有内容,所以还要给他一个截止位置。
  我们给他<\/h3>[\S\s].*<div class="notice-content">一个截止字段,为什么截止这么长呢,直接</h3>不就行了,因为直接</h3>的话,我发现匹配了两个位置出来…
  ( 注意!</h3>中的反斜杠直接用是错的,前面要加转移字符\,正确的是<\/h3>。)
  在这里插入图片描述
  没办法,它匹配了两个,我只能增长一点截止字段,[\S\s].*来跨过一大段空白和回车,然后一直取到<div class="notice-content">这个标签,就剩唯一一个了~
4. 好,将上面的正则表达式复制下来,使用re.compile() 和 re.findall()两个方法连用,进行对网页内容的匹配寻找。

re_extract = re.compile('<h3 class="center title">(.*)<\/h3>[\S\s].*<div class="notice-content">')
item_match = re.findall(re_extract, page.text)


  这样item_match里存的是一个列表,就是利用正则搜集的内容。
  
5. 用一个简单的判断

if item_match[0] == '登录成功':
    exit(5)     #用作给bat脚本返回值,加以判断显示
else:
    exit(2)

..exit( ),用来给bat脚本传递参数,原本这个方法是传递错误类型的,用来穿一下这个返回值,就可以在bat脚本里显示了:)
6. bat脚本里,默认会有一个全局变量 %ERRORLEVEL% ,用来接收错误类型的,python文件执行完后,肯定会执行一次exit( ),这里边的数会传递给 %ERRORLEVEL%

直接在.bat文件里加入这一段,就可以真正的显示登录状态了。

if %ERRORLEVEL%==5 (
   echo 登陆成功
   ) 
   else (
   echo 失败
   )

还是辣句话,感谢网上各种大佬文章。代码上传到我的GitHub上 https://github.com/BBbiao/Network
喜欢可以点星星,谢谢啦~

发布了14 篇原创文章 · 获赞 15 · 访问量 5630

猜你喜欢

转载自blog.csdn.net/GG_band/article/details/84335736