您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python爬蟲怎樣解決無線網絡掉線問題,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
以山東大學網絡為例,別的話不多說,直接上程序
__author__ = 'CQC' #-*- coding:utf-8 -*- import urllib import urllib2 import socket import types import time import re import os import subprocess class Login: #初始化 def __init__(self): #學號密碼 self.username = '201200131012' self.password = 'XXXXXX' #山大無線STU的IP網段 self.ip_pre = '211.87' #登錄時長 self.overtime = 720 #檢測間隔時間,單位為秒 self.every = 10 #模擬登錄 def login(self): print self.getCurrentTime(), u"正在嘗試認證QLSC_STU無線網絡" ip = self.getIP() data = { "username": self.username, "password": self.password, "serverType": "", "isSavePass": "on", "Submit1": "", "Language": "Chinese", "ClientIP": self.getIP(), "timeoutvalue": 45, "heartbeat": 240, "fastwebornot": False, "StartTime": self.getNowTime(), #持續時間,超過這個時間自動掉線,可進行設置 "shkOvertime": self.overtime, "strOSName": "", "iAdptIndex": "", "strAdptName": "", "strAdptStdName": "", "strFileEncoding": "", "PhysAddr": "", "bDHCPEnabled": "", "strIPAddrArray": "", "strMaskArray": "", "strMask": "", "iDHCPDelayTime": "", "iDHCPTryTimes": "", "strOldPrivateIP": self.getIP(), "strOldPublicIP": self.getIP(), "strPrivateIP": self.getIP(), "PublicIP": self.getIP(), "iIPCONFIG":0, "sHttpPrefix": "http://192.168.8.10", "title": "CAMS Portal" } #消息頭 headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36', 'Host': '192.168.8.10', 'Origin': 'http://192.168.8.10', 'Referer': 'http://192.168.8.10/portal/index_default.jsp?Language=Chinese' } post_data = urllib.urlencode(data) login_url = "http://192.168.8.10/portal/login.jsp?Flag=0" request = urllib2.Request(login_url, post_data, headers) response = urllib2.urlopen(request) result = response.read().decode('gbk') self.getLoginResult(result) #打印登錄結果 def getLoginResult(self, result): if u"用戶上線成功" in result: print self.getCurrentTime(),u"用戶上線成功,在線時長為",self.overtime/60,"分鐘" elif u"您已經建立了連接" in result: print self.getCurrentTime(),u"您已經建立了連接,無需重復登陸" elif u"用戶不存在" in result: print self.getCurrentTime(),u"用戶不存在,請檢查學號是否正確" elif u"用戶密碼錯誤" in result: pattern = re.compile('<td>.*?2553:(.*?)</b>.*?</td>', re.S) res = re.search(pattern, result) if res: print self.getCurrentTime(),res.group(1),u"請重新修改密碼" else: print self.getCurrentTime(),u"未知錯誤,請檢查學號密碼是否正確" #獲取當前時間戳,13位 def getNowTime(self): return str(int(time.time()))+"000" #獲取本機無線IP def getIP(self): local_iP = socket.gethostbyname(socket.gethostname()) if self.ip_pre in str(local_iP): return str(local_iP) ip_lists = socket.gethostbyname_ex(socket.gethostname()) for ip_list in ip_lists: if isinstance(ip_list, list): for i in ip_list: if self.ip_pre in str(i): return str(i) elif type(ip_list) is types.StringType: if self.ip_pre in ip_list: return ip_list #判斷當前是否可以聯網 def canConnect(self): fnull = open(os.devnull, 'w') result = subprocess.call('ping www.baidu.com', shell = True, stdout = fnull, stderr = fnull) fnull.close() if result: return False else: return True #獲取當前時間 def getCurrentTime(self): return time.strftime('[%Y-%m-%d %H:%M:%S]',time.localtime(time.time())) #主函數 def main(self): print self.getCurrentTime(), u"您好,歡迎使用模擬登陸系統" while True: nowIP = self.getIP() if not nowIP: print self.getCurrentTime(), u"請檢查是否正常連接QLSC_STU無線網絡" else: print self.getCurrentTime(),u"成功連接了QLSC_STU網絡,本機IP為",nowIP self.login() while True: can_connect = self.canConnect() if not can_connect: nowIP = self.getIP() if not nowIP: print self.getCurrentTime(), u"當前已經掉線,請確保連接上了QLSC_STU網絡" else: print self.getCurrentTime(), u"當前已經掉線,正在嘗試重新連接" self.login() else: print self.getCurrentTime(), u"當前網絡連接正常" time.sleep(self.every) time.sleep(self.every) login = Login() login.main()
來,我們來運行一下,看下效果吧! 執行
python login.py
當前是可以聯網的,我分別在網頁上操作執行了斷開,操作,程序自動檢測到掉線,自動重新連接。 接下來我直接斷開了 QLSC_STU 網絡的鏈接,程序同樣檢測到 QLSC_STU 這個熱點沒有連接上,提示用戶鏈接。 接下來我重新連接上了這個熱點,由于剛才已經登錄上線,且持續時間較短,網絡自動恢復正常。 下面是運行結果:
這樣我們就是實現了自動掉線的檢測和模擬登陸。
感謝你能夠認真閱讀完這篇文章,希望小編分享Python爬蟲怎樣解決無線網絡掉線問題內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。