前言
本文主要给大家介绍了关于利用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 0
1.取得字符串
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))
新闻热点
疑难解答