by 梁凯

今天我想给大家分享几个python脚本,分别是: 1.公司访问外网认证脚本(最初有同事写过,我优化了一下)。 2.统计周报系统所有同事的最近一篇周报。 3.统计测试技术分享里指定一个月所有同事的文章数量。 4.统计bugzilla系统里所有的quips。 这几个小脚本都是利用空闲时间,经过多次修改完成的。技术含量也不是特别高,主要是学以致用,因为光说不练假把式,只有在实践当中才能够真正的掌握知识点。实践是检验真理的唯一标准。 一、公司访问外网认证 在公司访问外网得需要认证,有时候不一定能够接触到浏览器,所以利用脚本认证上网还是很方便的。 优化功能: 1. 登录成功会有提示信息 2. 登录失败也会有提示信息,就是说可以捕捉异常 3. 有时候输入中文名字不方便,所以可以把名字提前输入脚本 4. 输入密码屏幕不可见,先前同事写的脚本是明文密码 源码:

#!/usr/bin/env python
#coding:utf-8 ####################
#公司访问外网认证脚本
#update by kai.liang@i-soft.com.cn
################### import urllib, urllib2, getpass #name = raw_input('请输入用户名:')
name = '梁凯' # 在本行输入您的名字
url = 'http://172.16.1.3/webAuth/index.htm' def auth():
page = 0
parameters = {'password':passwd,'pwd':passwd,'secret':'true','username':name}
#提交的数据参数
data = urllib.urlencode(parameters) #对参数进行编码
req = urllib2.Request(url, data) #形成url请求
try:
response = urllib2.urlopen(req) #发送请求
response = urllib2.urlopen(req) #发送请求
page = response.read() #读取返回的页面
except Exception, e:
print '登录失败,请重新登录!' #修复HTTPError错误
if page:
if "认证成功" in page or "该IP已登录" in page:
print '恭喜您,登录成功,您现在可以访问外网了!'
else:
print '账号或密码错误,请重新登录!' if __name__ == '__main__':
print "####################################"
print "#公司访问外网认证脚本 #"
print "#初次使用请将脚本12行替换为您的名字#"
print "####################################"
print '用户名:%s' %name
passwd = getpass.getpass('请输入密码:')
auth()

二、统计周报系统所有同事的最近一篇周报 本脚本可以把所有同事最近发布的一篇周报标题给抓取出来,这样可以知道哪些同事有没有更新周报了,嘿嘿。 这其实属于爬虫类型的脚本,使用urllib2模块抓取特定网页,然后使用re正则表达式模块进行过滤字符,把需要的信息给抓取出来。利用爬虫还可以批量下载图片。 上源码:

#!/usr/bin/python
#coding:utf-8 ####################
#本文档爬取周报系统所有同事的最近一篇周报
#powered by: kai.liang@i-soft.com.cn
#date:20170224
#version:1.0
###################### import urllib2
import re #载入所需模块 class Bloglist():
url='http://tfs.i-soft.com.cn/drupal/?q=blog/' #周报系统日志网址的前缀 def __init__(self, userid):
self.url=Bloglist.url+str(userid) #网址=网址前缀+用户id
def getHtml(self): #获取网页内容
try:
html = urllib2.urlopen(self.url).read()
return html
except Exception, e:
print 'url error!!' def getTitle(self): #应用正则表达式提取网页中的日志标题
html=self.getHtml()
reg = r'node/\d+">(.*\d{6}.*)'
titlere = re.compile(reg)
lines = html.split()
m = re.search(titlere, html)
titles = m.groups()
title = ''.join(titles)
return title
def main():
"""
zhaopanpan:7
lixiaoshuang:21
huangjun:22
wangjue:23
liuke:24
lipeng:28
hanjingjing:30
lixingfeng:41
liuhui:42
liangkai:43
liulu:44
zhaolili:45
yaoxiangchuang:46
liuchang:47
liuchunyuan:48
lufei:49
liuyang:50
chijianping:51 """ #每位用户的id
users = [7,21,22,23,24,28,30,41,42,43,44,45,46,47,48,49,50,51]
print '----------------------------'
print '测试中心成员最近一篇周报'
print '----------------------------'
for i in users:
userBlog = Bloglist(i) #对象初始化
title = userBlog.getTitle() #使用对象方法
print title
print '----------------------------' if __name__== '__main__':
main()

使用方法:./weekpaper-spider.py

[root@server49 pytest_20170309]# ./weekpaper-spider.py
----------------------------
测试中心成员最近一篇周报
----------------------------
测试个人周报20170331-赵盼盼
测试个人周报-20170331-李小双
测试个人周报-20170331-黄俊
测试个人周报-20170331-王珏
测试个人周报-20170331-刘柯
测试个人周报20170331-李鹏
测试个人周报20170331-韩晶晶
测试个人周报20170331-李兴峰
测试个人周报-20170331-刘辉
测试个人周报-20170331-梁凯
测试个人周报-20170331-刘璐
测试个人周报-20170331-赵丽丽
测试个人周报-20170331-姚翔川
测试个人周报-20170331-刘畅
测试个人周报-20170331-刘春媛
测试个人周报20170331-路斐
测试个人周报-20170407-刘杨
测试个人周报-20170331-迟健平
----------------------------

三、统计测试技术分享里指定一个月所有同事的文章数量 本脚本可以统计测试技术分享里指定一个月所有同事的文章数量,包括每位同事发布文章数量,转载和原创各自数量。还有总文章数量以及总转载和总原创数量。辨别是不是转载主要是看标题有没有“转载”或“转”的关键词,如果同事不写这个关键词的话只能认为是原创了。 最开始可以显示作者标题,看着乱我给去掉了。现在是直接屏幕输出,其实可以写入文本文件,或者制作成excel文件,当然得使用第三方模块才可以。 源码:

#!/usr/bin/python
#coding:utf-8 ##################
#爬取测试技术分享里指定某一月所有同事的文章发布数量
#powered by: kai.liang@i-soft.com.cn
#date: 20170307
#version: 1.0
################# import urllib2
import re
import sys #载入网络、正则、系统的模块 try:
month = sys.argv[1] #运行脚本时传递的参数
except Exception as e:
print '请输入参数,例如:'
print '查询3月份的文章请输入:python blog-spider.py 03'
exit()
year = 2017 #默认年份为2017,可以此处修改 class Bloglist(): #定义类,脚本的核心
total_zhuan=0
total_yuan=0
total = 0
urlHead = 'http://192.168.32.3/blog/?author=%s&&m=%s'
def __init__(self, author, date='201703'): #初始化参数
self.url = self.urlHead %(author,date)
self.zhuan = 0
self.yuan = 0
def getHtml(self): #获取网页文本
html = urllib2.urlopen(self.url).read()
return html
def getTitle(self): #获取网页中某一作者的文章标题
reg = r'"bookmark">(.*)'
titlere = re.compile(reg)
title = re.findall(titlere, self.getHtml())
return title
def count(self): #计算作者的文章数量,本打算输出文章标题
#看着乱,就给注释掉了
#print "文章标题:"
#print "-----------------------------"
for line in self.getTitle():
# if '转载' or '(转)' in line:
if '转载' in line or line[0:9]== '(转)':
self.zhuan += 1
else:
self.yuan += 1
#print line
#print "-----------------------------"
print "发布文章:" + str(self.zhuan+self.yuan) + "篇 ",
print "转载:"+ str(self.zhuan) + "篇 " + "原创:" + str(self.yuan) + "篇"
Bloglist.total_zhuan = Bloglist.total_zhuan + self.zhuan
Bloglist.total_yuan = Bloglist.total_yuan + self.yuan
Bloglist.total = Bloglist.total_zhuan + Bloglist.total_yuan
def author():
date = str(year) + str(month)
user = {2:'李 鹏', 3:'王 珏', 5:'黄 俊',6:'韩晶晶', 7:'李小双', 8:'赵盼盼', \
10:'刘 珂',11:'刘 辉', 12:'刘春媛', 13:'路 斐', 14:'梁 凯', 15:'李兴峰', 16:'刘 璐',\
17:'姚翔川',18:'刘 畅', 19:'刘 杨', 20:'赵丽丽', 21:'迟建平'}
#测试成员对应的id
print "-------------------------------------------"
print "2017年%s月份测试中心成员发布文章情况" %month
print "-------------------------------------------"
for i in user.keys():
userPaper = Bloglist(i, date) #成员对象的实例化
print '%s' %user[i],
userPaper.count()
print "总计:%s篇,转载:%s篇,原创:%s篇" %(Bloglist.total, Bloglist.total_zhuan, Bloglist.total_yuan)
print "-------------------------------------------" if __name__ == '__main__':
author()

使用方法:

./blog-spider.py 03 脚本后面加入月份,默认是年份是2017。
[root@server49 pytest_20170309]# ./blog-spider.py 03
-------------------------------------------
2017年03月份测试中心成员发布文章情况
-------------------------------------------
李  鹏 发布文章:3篇  转载:1篇 原创:2篇
王  珏 发布文章:2篇  转载:0篇 原创:2篇
黄  俊 发布文章:2篇  转载:1篇 原创:1篇
韩晶晶 发布文章:2篇  转载:1篇 原创:1篇
李小双 发布文章:1篇  转载:0篇 原创:1篇
赵盼盼 发布文章:3篇  转载:2篇 原创:1篇
刘  珂 发布文章:3篇  转载:0篇 原创:3篇
刘  辉 发布文章:3篇  转载:2篇 原创:1篇
刘春媛 发布文章:3篇  转载:2篇 原创:1篇
路  斐 发布文章:2篇  转载:1篇 原创:1篇
梁  凯 发布文章:3篇  转载:2篇 原创:1篇
李兴峰 发布文章:3篇  转载:1篇 原创:2篇
刘  璐 发布文章:3篇  转载:2篇 原创:1篇
姚翔川 发布文章:3篇  转载:2篇 原创:1篇
刘  畅 发布文章:3篇  转载:2篇 原创:1篇
刘  杨 发布文章:3篇  转载:2篇 原创:1篇
赵丽丽 发布文章:3篇  转载:1篇 原创:2篇
迟建平 发布文章:3篇  转载:2篇 原创:1篇
总计:48篇,转载:24篇,原创:24篇
-------------------------------------------

四、统计bugzilla系统里所有的quips 大家访问bugzilla时会看到很多好玩的句子,可是你有没有想过一共有多少个quips呢,如果是都抓取下来该如何去做呢?好,大家先不要参考下面的代码,自己去写写,然后跟我的对比一下,看看你到底比我强多少。

此处需等待10分钟……………………………………

好,相信大家都写完了。我们来分析一下,首先应该使用一个可以看到quips的地址,这个地址bug数量越少越好,减少载入时间呀。然后把所以网页内容抓取下来,分析quips的关键词,使用re模块的正则表达式过滤quips。因为每次显示的quips都是随机的,所以你得抓取足够多的次数才可以遍历整个quips的数据库,而且还会有重复,你得把重复的去掉。我选择获取100次quips,执行一遍可能不能遍历所有的数据,得运行几遍才可以。 我得到的结果是一共含有48个quips。 上源码:

#!/usr/bin/python
#coding:utf-8
import urllib2
import re
import os #查看quips所使用的网址
url = "http://192.168.32.3/buglist.cgi?query_format=advanced&list_id=81057&short_desc=123&short_desc_type=allwordssubstr&product=smb_DEV" def getquip():
html = urllib2.urlopen(url).read() #读取网页内容
rules = r'"quips.cgi">(.*)'
reg = re.compile(rules)
quip = re.findall(reg,html) #使用正则表达式提取quips字符
quip = ''.join(quip)
#print quip
q = open('quips.txt', 'r+')
quips = q.read()
q.close() #读取文件内容
if quip not in quips: #如果获取的quip不在quips.txt文件里则写入文件
f = open('quips.txt', 'a')
f.write(quip)
f.write('\n')
f.close()
def isquips():
if not os.path.isfile('quips.txt'):
a = os.system('touch quips.txt') #判断quips.txt是否存在,不存在就创建
if __name__ == "__main__":
print "Getting quips, please waiting....."
isquips()
for i in range(100): #获取100个quips
getquip()
print "Getting quips completed, please look over the quips.txt."

使用方法:./bugQuips.py

[root@server49 pytest_20170309]# ./bugQuips.py
Getting quips, please waiting.....
Getting quips completed, please look over the quips.txt.
[root@server49 pytest]# cat quips.txt
水深火热~
骂程序员职业的人大都自己就是程序员。因为高水平的人不屑于骂,低水平的人不知道怎么骂
……于浩歌狂热之际中寒;于天上看见深渊。于一切眼中看见无所有;于无所希望中得救。……
质量即生命,责任重泰山
程序员都是好男人,因为他们一整天都在扪心自问:我到底错在哪了,让我知道,我一定改...
Fear can hold you prisoner. Hope can set you free.
再见,罗纳尔多!
过少的测试是一种不负责任,过多的测试是一种犯罪!
你是我们加班的罪魁祸首,坚决消灭你!!!!!!!!!!
很多程序员不知道格子衫有一个隐藏属性:穿上后遇到BUG的概率减少5%!
问君能有几多愁,恰似调完bug改需求!!!
平均每三个“屌丝”拥有一个女友(男友)
我们有理由相信计算机的世界没有诡异的事情,一定是自己犯了某个傻X的错误
"hello world" 就是罪魁祸首。不编程,何来bug!?!?
原谅我一生不羁放纵爱自由
若是黄艺博不娶林妙可,我就再也不相信爱情了……
一切罪恶BUG的根源都是“Hello,word!”
一切Bug都是纸老虎!你强他就弱!你弱他就强!在战略上藐视bug,在战术上重视bug!有木有?
北京人说,推开窗,咱就能闻到烟。上海人讲,这有啥,呵呵,打开自来水,咱就能喝到排骨汤。
所有的程序都有逻辑,所有的事物都有因果。
人生一梦,白云苍狗
the quieter you become,the more you are able to hear
爱他,就给他提bug;恨他,也给他提bug
神马bug,都是浮云
国家项目是学术腐败之源!
抗bug战争,漫长而艰难
谁也无法改变现状,唯有无数程序员血洒大地,才能使项目重建天日~
Jobs教主去了,改变世界的事就交给我们吧
^如今但愿关门睡,一任梅花任雪飞^
你若不离不弃,我必死无疑
人生三恨:一恨海棠无香,二恨鲥鱼多刺,三恨红楼梦未完
轻轻地我走了,正如我悄悄的来;我挥一挥衣袖,fix一片bug……
你若安好,便是晴天。
人生如梦亦如幻,朝如晨露暮如霞。
一个程序员看到bug后,如果第一反应是,这是硬件、库的问题,那么说看程序员入门
片云归洞非有意,我造Bug本无心
恨你在心口难开
满纸心酸泪。
不管你有多少经验,BUG一直跟着你
生命不息,测试不止
天下风云出我辈,一入江湖岁月催
成也bug,败也bug
皇图霸业谈笑中,不胜人生一场醉
不生不灭,不垢不净,不增不减
未来姗姗来迟,现在如箭飞逝
知识就是力量,一种让别人觉得自己很笨的力量。。。。
菩提本无树,明镜亦非台,本来无一物,何处惹尘埃。
道,生一一,生二二,生三三,生万物万物,附阴而抱阳,冲气以为和。

结语 直接复制网页的源码由于格式问题可能不能执行,建议wordpress上装个代码高亮显示的插件,那样查看代码就方便了。需要的童鞋去github上下载吧。 纸上得来终觉浅,觉知此事要躬行。看十行代码不如实实在在的敲一行代码。当你敲出来时才可以发现一些细节问题,才可以体会代码的精妙之处。很多同学都在学习编程,我认为还是应该多把书上的代码自己敲一遍,可能的话把学到的知识用于解决工作和生活中的问题。毕竟技术可以改变生活。学习——工作——再学习——再工作——能力提升。

“Life is short, you need python”

分享几个python小脚本的更多相关文章

  1. 分享一个刷网页PV的python小脚本

    下面分享一个小脚本,用来刷网页PV. [root@huanqiu ~]# cat www.py #!/usr/bin/python# coding: UTF-8import webbrowser as ...

  2. python 小脚本升级-- 钉钉群聊天机器人

    一则小脚本(工作中用) 在这篇文章中写的监控的脚本,发送监控的时候 是利用的邮箱,其实在实际,邮箱查收有着不方便性,于是乎升级, 我们工作中,经常用钉钉,那么如果要是能用到钉钉多好,这样我们的监控成功 ...

  3. python小脚本(18-11.10)-修改excle后批量生成,作用:导入数据时,系统做了不能导入重复数据时的限制时使用 -本来是小白,大神勿扰

    from testcase.test_mokuai.operation_excle import OperationExcleimport shutil class test_daoru(): #一个 ...

  4. 第一个python小脚本

    第一个python小实验 前言 作为一个工作1年的linux运维搬砖师来说,发现没点开发能力真的是不好混啊.于是下定决心学习python! 直接上刚写的语句(大神莫鄙视) 通过控制台输入一个账号密码, ...

  5. 短小实用 渗透用的Python小脚本

    渗透的很多时候,找到的工具并不适用,自己码代码才是王道,下面三个程序都是渗透时在网络上找不到合适工具,自己辛苦开发的,短小实用. 一.记录root密码小工具 root.py #!/usr/bin/py ...

  6. 网站渗透常用到的Python小脚本

    0×00渗透的很多时候,找到的工具并不适用,自己码代码才是王道,下面三个程序都是渗透时在网络上找不到合适工具,自己辛苦开发的,短小使用,求欣赏,求好评. 0×01记录root密码小工具 root.py ...

  7. Python小脚本程序

    本文旨在搜集最简单最原子性的代码块,简单清晰容易阅读,然后由用户自己组合.Python代码排版请自行修改. 这里是索引目录: 1. 下载网站文件 2. 下载网站多个文件 1. 下载网站文件 impor ...

  8. 将二级目录下的文件合并成一个文件的Python小脚本

    这个小程序的目的是将二级目录下的文件全部合并成一个文件(其实几级目录都可以,只要做少许改动) #coding:utf8 import sys, os def process(path): new_fi ...

  9. [ python ] 小脚本及demo-持续更新

    1.  备份文件并进行 md5 验证 需求分析: 根据需求,这是一个流程化处理的事件. 检验拷贝文件是否存在,不存在则执行拷贝,拷贝完成再进行 md5 值的比对,这是典型的面向过程编程: 代码如下: ...

随机推荐

  1. linux c socket 并发 服务端

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types. ...

  2. stm32之USART学习

    首先,我是看着这位博主的文章受到的启发,进而加深了自己对USART的理解.下面是自己改装并实验过的程序. 原文:http://www.cnblogs.com/greatwgb/archive/2011 ...

  3. Android性能优化——之防止内存泄露

    又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题. 最近进行技术支持的时候,遇到了几个崩溃的问题,都是OOM异常,一般OOM异常给人的感觉应该是加载大图片造成的 ...

  4. 初识Kafka----------Centos上单机部署、服务启动、JAVA客户端调用

    作为Apach下一个优秀的开源消息队列框架,Kafka已经成为很多互联网厂商日志采集处理的第一选择.后面在实际应用场景中可能会应用到,因此就先了解了一下.经过两个晚上的努力,总算是能够基本使用. 操作 ...

  5. 进程间通信系列 之 socket套接字实例

    进程间通信系列 之 概述与对比   http://blog.csdn.net/younger_china/article/details/15808685  进程间通信系列 之 共享内存及其实例   ...

  6. margin重叠

    margin重叠也就是我们常说的CSS 外边距合并,W3C给出如下定义: 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距. 合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者 ...

  7. python安装pillow模块错误

    安装的一些简单步骤就不介绍了,可以去搜索一下,主要就记录下我在安装pillow这一模块遇到的问题 1:安装好pillow后,安装过程没有出错 2:但是在python的IDLE输入from PIL im ...

  8. 【NLP】3000篇搜狐新闻语料数据预处理器的python实现

    3000篇搜狐新闻语料数据预处理器的python实现 白宁超 2017年5月5日17:20:04 摘要: 关于自然语言处理模型训练亦或是数据挖掘.文本处理等等,均离不开数据清洗,数据预处理的工作.这里 ...

  9. 在 ubuntu 下优雅的使用 Sublime Text 3 写 Python

    此文章非技术文,就是一些对于 Sublime 俺之前经常用的 方法(快捷键 )和 工具 有一些工具俺也用过,但是效果不太好,可以说跟shi 一样,可能每个人的用处不一样,咱就不提了,免得招 来口舌之争 ...

  10. asp.net 母版-页脚制作

    1.母版创建流程略过. 2.创建母版页css:Site.css body { } .linkButton{ text-decoration:none; color:whitesmoke; } 3.母版 ...