亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python爬蟲怎樣解決無線網絡掉線問題

發布時間:2020-11-12 09:30:09 來源:億速云 閱讀:368 作者:小新 欄目:編程語言

這篇文章主要介紹了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爬蟲怎樣解決無線網絡掉線問題

這樣我們就是實現了自動掉線的檢測和模擬登陸。

感謝你能夠認真閱讀完這篇文章,希望小編分享Python爬蟲怎樣解決無線網絡掉線問題內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西宁市| 陆川县| 津市市| 牟定县| 姜堰市| 西乌珠穆沁旗| 铜陵市| 岗巴县| 武夷山市| 大姚县| 松桃| 桦甸市| 新干县| 青神县| 喀什市| 东光县| 霍林郭勒市| 大埔县| 株洲县| 邵东县| 分宜县| 普兰店市| 巨鹿县| 大安市| 胶南市| 和顺县| 区。| 昭觉县| 洞头县| 马尔康县| 湘潭县| 西乌珠穆沁旗| 军事| 石门县| 秦安县| 河池市| 苏尼特右旗| 邻水| 广西| 克拉玛依市| 济源市|