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 相关文章推荐
Python解析命令行读取参数--argparse模块使用方法
Jan 23 Python
使用python获取csv文本的某行或某列数据的实例
Apr 03 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
django admin.py 外键,反向查询的实例
Jul 26 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
Sep 30 Python
Python实现图片批量加入水印代码实例
Nov 30 Python
python pandas利用fillna方法实现部分自动填充功能
Mar 16 Python
详解用Python爬虫获取百度企业信用中企业基本信息
Jul 02 Python
python爬虫使用正则爬取网站的实现
Aug 03 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 Python
python Cartopy的基础使用详解
Nov 01 Python
Pytorch DataLoader shuffle验证方式
Jun 02 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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
PHP+DBM的同学录程序(2)
2006/10/09 PHP
php 过滤器实现代码
2010/08/09 PHP
php一个解析字符串排列数组的方法
2015/05/12 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
js change,propertychange,input事件小议
2011/12/20 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
分享一个简单的python读写文件脚本
2017/11/25 Python
详解python实现线程安全的单例模式
2018/03/05 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
Python简单I/O操作示例
2019/03/18 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
HTML5 文件域+FileReader 分段读取文件并上传到服务器
2017/10/23 HTML / CSS
高校毕业生自我鉴定
2013/10/27 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
礼仪培训心得体会
2016/01/22 职场文书
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android