前言
本文主要給大家介紹了關于利用python 3.5檢測路由器流量并寫入txt的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹。
環境交代:win10+python3.6
代碼非常簡單,
模擬登陸,沒有 網頁標簽過濾,沒有 多線程,也沒有 文本處理,只有涉及到字符串截取 本地文本寫入,有這么低級的代碼是因為這個路由器頁面非常垃圾,用不到~~~,不過這樣也適合初學者觀看,當然了,后續會嘗試添加更多功能
首先我們對自己的需求要進行分析,新手嘛,先把復雜的東西簡單化,模塊化,整理出思路,再一步步的去實現,最后整合。
1、獲得數據
網頁編碼,編碼沒有處理好會報錯,涉及到一些函數 編碼轉換,read()方法獲取到的非字符串類型,要預先進行處理2、處理數據
方法有很多,正則,字符串截取,等等不一一介紹,適合的才是最好的,我覺得正則是很強大的,但是也是相當反人類的3、保存數據
注意win下路徑和linux下路徑寫法不同 寫入的編碼類型需要進行處理重點講一講我遇到的坑
一般來講右鍵查看頁面編碼,如圖所示,因為在國外是非常奇怪的編碼

當時我就蒙蔽了,這是什么鬼~
這個時候我們需要用到chardet庫來判斷編碼類型,拿百度舉例,自行百度python第三方庫如何安裝,這里不做闡述
import chardetimport urllib.requesthtml = urllib.request.urlopen('http://www.baidu.com/').read()print (chardet.detect(html))得到的結果如下:
C:/python/python.exe D:/python/test/2.py{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}Process finished with exit code 01.取得字符串
import urllib.requestimport osfrom bs4 import BeautifulSoupimport timedef getHtml(url): html = urllib.request.urlopen(url).read() return html#獲取字符串,因為我在國外,路由器low到爆,編碼格式也蛋疼了我很久html = getHtml("http://192.168.0.254/pub/fbx_info.txt")#將read()獲取的是bytes編碼轉化成strhtml = html.decode("ISO-8859-1")因為是歐洲網站,獲取的卻是一個 【ISO-8859-1】的網頁編碼。
由于這里我們用read()方法讀取,獲取到的是bytes類型,此時需要轉換成str類型的,才可以進行下一步的處理,如果不處理就會有下列錯誤
TypeError: a bytes-like object is required, not 'str'
這里可以使用decode()方法處理一下
html = html.decode("ISO-8859-1")
使用type()方法檢測下編碼
print(type(html))
新聞熱點
疑難解答