中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

民乐县| 当涂县| 保康县| 上思县| 栖霞市| 永宁县| 沂南县| 上高县| 都安| 景泰县| 达拉特旗| 安远县| 家居| 聊城市| 武强县| 阿坝县| 武宁县| 出国| 农安县| 石阡县| 德令哈市| 锡林郭勒盟| 鄂尔多斯市| 轮台县| 台中市| 霍城县| 应用必备| 上高县| 平南县| 丹寨县| 阳山县| 县级市| 岑溪市| 资源县| 永春县| 嫩江县| 玉树县| 河西区| 嘉祥县| 嘉黎县| 进贤县|