python 3.5实现检测路由器流量并写入txt的方法实例
作者:会讲段子的挨踢狗 发布时间:2022-11-26 01:35:23
前言
本文主要给大家介绍了关于利用python 3.5检测路由器流量并写入txt的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍。
环境交代:win10+python3.6
代码非常简单,
模拟登陆,没有
网页标签过滤,没有
多线程,也没有
文本处理,只有涉及到字符串截取
本地文本写入,有
这么低级的代码是因为这个路由器页面非常垃圾,用不到~~~,不过这样也适合初学者观看,当然了,后续会尝试添加更多功能
首先我们对自己的需求要进行分析,新手嘛,先把复杂的东西简单化,模块化,整理出思路,再一步步的去实现,最后整合。
1、获得数据
网页编码,编码没有处理好会报错,涉及到一些函数
编码转换,read()方法获取到的非字符串类型,要预先进行处理
2、处理数据
方法有很多,正则,字符串截取,等等不一一介绍,适合的才是最好的,我觉得正则是很强大的,但是也是相当 * 的
3、保存数据
注意win下路径和linux下路径写法不同
写入的编码类型需要进行处理
重点讲一讲我遇到的坑
一般来讲右键查看页面编码,如图所示,因为在国外是非常奇怪的编码
当时我就蒙蔽了,这是什么鬼~
这个时候我们需要用到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://www.jb51.net/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计划任务定时运行,勉强凑活用下日后再学习补充
来源:https://segmentfault.com/a/1190000012450345
猜你喜欢
- 一、装饰器decorator decorator设计模式允许动态地对现有的对象或函数包装以至于修改现有的职责和行为,简单地讲用来动态地扩展现
- 我的原数据库是3.23版本的.前几天因为一个论坛转移.必须用5.1的.于是就是升级了数据库.论坛是正常的.可以是原来的一个老库因为是3.23
- 在jupyter notebook或者是 Qtconsole下编译运行一个简单的pyqt程序,总是报错:The kernel appears
- 以前写过《 10条影响CSS渲染速度的写法与建议》,今天放些数据出来,供参考;首先说明一点,CSS对网页的最后渲染出来的速度影响非
- HTML5 是近十年来 Web 标准最巨大的飞跃。和以前的版本不同,HTML 5 并非仅仅用来表示 Web 内容,它的使命是将 W
- 单向链表单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节
- 目前整个开发社区对AOP(Aspect Oriented Programing)推崇备至,也涌现出大量支持AOP的优秀Framework,-
- myisam_max_[extra]_sort_file_size足够大delay_key_write减少io,提高写入性能bulk_ins
- Python 相对路径报错:"No such file or directory"'原因及解决方法如果你取相对路
- 如果你使用过大部分,那么你的ASP功力应该是非常高的了ADO对象(太常用了):ConnectionCommandRecordSetRecor
- 设置自动生成作者信息1、file->settings->Editor->file and code templates-&
- 目录Counter举例实战sortedallF-strings总结Python中冷门但非常好用的内置函数 Counter举例 实战sorte
- 这篇文章主要介绍了python代码如何实现余弦相似性计算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- PDO::quotePDO::quote — 为SQL语句中的字符串添加引号。(PHP 5 >= 5.1.0, PECL pdo &g
- 分享两个常用的代码生成工具:gormgenhandlergengormgen基于 MySQL 数据表结构进行生成 3 个文件:生成表的 st
- 相信大家都做过九宫格的游戏,规则是要求填数字1-9在九个方格内,使横竖斜相加和相等。只填九个那可能有些简单,但是填25个,填49个,81个等
- 一、使用xlrd对excel进行数据读取excel表格示例:安装xlrd库pip install xlrd导入xlrd库import xlr
- PDOStatement::fetchPDOStatement::fetch — 从结果集中获取下一行(PHP 5 >= 5.1.0,
- 用法:分析一个脚本的依赖: analysis_dependency.py script1.py递归分析依赖: analysis_depend
- 介绍我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法。按照微软所述,通过宿主