首页 > 编程 > Python > 正文

python 3.5实现检测路由器流量并写入txt的方法实例

2020-02-16 11:09:02
字体:
来源:转载
供稿:网友

前言

本文主要给大家介绍了关于利用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))

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表