Python爬虫实践笔记(三)

网页式登录的无线网络重连–本质

注释:事实上这个程序就是在连接了某个无线网之后,登录该无线网指定的页面,然后就可以正常上网了。跟爬虫的连接和登录网页的本质是一样的,只是需要分析一下请求和响应数据,以至于能够实现重连。


第一步:分析登录请求

(1)先使用正常的方法登录网页,然后使用浏览器的开发者工具查看一下请求包是需要哪些参数data以及头文件信息headers的。
(2)事实上,如果我们登录的不是网页,也是某个客户端程序,我们只需要使用抓包工具找到客户端登录的那个请求包,找到需要发送的信息,然后就可以用python模拟登录了。


第二步:模拟登录-请求处理

(1)上一步我们知道了登录需要的信息,这里我们就可以生成请求包了。
(2)若需要知道客户端的IP地址,我们可以使用Python的socket模块的gethostbyname(hostname)和gethostbyname_ex(hostname)方法来获取客户端的IP地址。这是因为要连上了无线网络,才能使用网页登录,服务器会根据登录主机的ip地址来判断主机是否已经连上了无线网络。
(3)构建好请求包之后我们就可以使用urlopen发送请求了。


第三步:模拟登录-响应处理

(1)发送请求后会收到响应包,不同的情况下可能受到不同的响应信息,例如登录账号不正确,密码不正确,重复登录等,因此我们必须对响应信息做相应的处理。
(2)对于响应信息解码获取到对应的文本信息后,使用字符串匹配和正则表达式获取表示不同状态的信息,根据这些信息做对应的处理。


第四步:检查连接是否成功

(1)由于不知道网络什么时候会掉线,因此我们需要一个方法来查看网络还是否处于连接状态。
(2)使用的方法是用python模拟控制台的ping操作,根据返回值来判断是否连上网络。这里用到了python的os和subprocess模块来模拟控制台ping某个网页,如百度,来确定网络是否还能用。


第五步:网络重连

(1)当使用第四步时发现网络已经掉线了,我们使用前三步封装好的方法来重新登录即可。


学习心得:
(1)从这次实践我发现,python其实可以模拟连接、登录所有的网页,甚至是客户端,前提是你要知道在连接和登录的时候你要给网页或者客户端发送什么样的信息,然后构建好对应的请求包再发送过去就可以了。


具体的方法请看:静觅 » Python爬虫实战三之实现山东大学无线网络掉线自动重连

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章