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


Posted in Python onDecember 17, 2017

前言

本文主要给大家介绍了关于利用python 3.5检测路由器流量并写入txt的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍。

环境交代:win10+python3.6

代码非常简单,

  • 模拟登陆,没有
  • 网页标签过滤,没有
  • 多线程,也没有
  • 文本处理,只有涉及到字符串截取
  • 本地文本写入,有

这么低级的代码是因为这个路由器页面非常垃圾,用不到~~~,不过这样也适合初学者观看,当然了,后续会尝试添加更多功能

首先我们对自己的需求要进行分析,新手嘛,先把复杂的东西简单化,模块化,整理出思路,再一步步的去实现,最后整合。

1、获得数据

  • 网页编码,编码没有处理好会报错,涉及到一些函数
  • 编码转换,read()方法获取到的非字符串类型,要预先进行处理

2、处理数据

  • 方法有很多,正则,字符串截取,等等不一一介绍,适合的才是最好的,我觉得正则是很强大的,但是也是相当反人类的

3、保存数据

  • 注意win下路径和linux下路径写法不同
  • 写入的编码类型需要进行处理

重点讲一讲我遇到的坑

一般来讲右键查看页面编码,如图所示,因为在国外是非常奇怪的编码

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

当时我就蒙蔽了,这是什么鬼~

这个时候我们需要用到chardet库来判断编码类型,拿百度举例,自行百度python第三方库如何安装,这里不做阐述

import chardet
import urllib.request
html = 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.request
import os
from bs4 import BeautifulSoup
import time
def getHtml(url):
 html = urllib.request.urlopen(url).read()
 return html
#获取字符串,因为我在国外,路由器low到爆,编码格式也蛋疼了我很久
html = getHtml("http://192.168.0.254/pub/fbx_info.txt")
#将read()获取的是bytes编码转化成str
html = 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))

反馈

<class 'str'>

2.处理字符串

#操作字符串
html = html.split('WAN')[1].split('Ethernet')[0]
time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
#因为使用记事本,在记事本中换行只认\r\n
str = time+html+"\r\n"

这里我使用的是split()方法,使用方法呢,推荐大家学会查手册,这里也不详细再解释了。

我通过split()方法截取到了自己需要的字符串,然后用time()函数获取当前本地时间,然后用+连接符把当前本地时间和处理后的字符串连接起来,再在末尾接上换行符rn,因为懒到只用记事本,换行符这里只算一个小坑

3.写入txt

# 保存文件为txt,win环境路径
outfile = open("C:\\Users\\sw\\Desktop\\route.txt","a+",encoding="utf-8",newline='\n')
outfile.write(str)
outfile.close()
print("文件已保存到本地")

关于open函数,每一个参数,此篇博文讲的非常清楚非常详细,感谢博主的整理,大家可以看看,建议收藏

https://3water.com/article/58002.htm

要强调的有2个参数

encoding和newline,因为用的比较少,然后很多文章并不会提到

有人可能会说,哇,真的懒

没错,我就是懒,而且再说了,写了还没人家写的好,那我何必误人子弟。

下面贴上全部代码

import urllib.request
import os
from bs4 import BeautifulSoup
import time
def getHtml(url):
 html = urllib.request.urlopen(url).read()
 return html

#获取字符串,因为我在国外,路由器low到爆,编码格式也蛋疼了我很久
html = getHtml("http://192.168.0.254/pub/fbx_info.txt")
#将read()获取的是bytes编码转化成str
html = html.decode("ISO-8859-1")
#再次检测编码
#print(type(html))
#操作字符串
html = html.split('WAN')[1].split('Ethernet')[0]
time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
#因为使用记事本,在记事本中换行只认\r\n
str = time+html+"\r\n"
# 保存文件为txt,win环境路径
#print(type(str))
outfile = open("C:\\Users\\sw\\Desktop\\route.txt","a+",encoding="utf-8",newline='\n')
outfile.write(str)
outfile.close()
print("文件已保存到本地")

本来当初的想法是每秒获取一次流量,写入txt,再读txt,通过数据来绘图

但是有事暂时搁下了,只是win计划任务定时运行,勉强凑活用下日后再学习补充

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Linux下用Python脚本监控目录变化代码分享
May 21 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
Python进阶之尾递归的用法实例
Jan 31 Python
详解基于django实现的webssh简单例子
Jul 17 Python
在python中实现对list求和及求积
Nov 14 Python
Face++ API实现手势识别系统设计
Nov 21 Python
python实现随机漫步方法和原理
Jun 10 Python
python如何获得list或numpy数组中最大元素对应的索引
Nov 16 Python
五种Python转义表示法
Nov 27 Python
Pandas的数据过滤实现
Jan 15 Python
OpenCV-Python直方图均衡化实现图像去雾
Jun 07 Python
Python内置包对JSON文件数据进行编码和解码
Apr 12 Python
python中闭包Closure函数作为返回值的方法示例
Dec 17 #Python
django模板语法学习之include示例详解
Dec 17 #Python
详解python string类型 bytes类型 bytearray类型
Dec 16 #Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 #Python
python读取与写入csv格式文件的示例代码
Dec 16 #Python
浅谈用VSCode写python的正确姿势
Dec 16 #Python
numpy中索引和切片详解
Dec 15 #Python
You might like
php cookis创建实现代码
2009/03/16 PHP
使用PHP实现微信摇一摇周边红包
2016/01/04 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
微信小程序 蓝牙的实现实例代码
2017/06/27 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
vue模式history下在iis中配置流程
2019/04/17 Javascript
Node.js Domain 模块实例详解
2020/03/18 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Python打包可执行文件的方法详解
2016/09/19 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Python+Appium实现自动化测试的使用步骤
2020/03/24 Python
Python json读写方式和字典相互转化
2020/04/18 Python
python numpy实现rolling滚动案例
2020/06/08 Python
Python实现自动整理文件的脚本
2020/12/17 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
人事主管的岗位职责
2013/11/16 职场文书
运动会通讯稿300字
2014/02/02 职场文书
人事部专员岗位职责
2014/03/04 职场文书
HR求职自荐信范文
2014/06/21 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书