渗透利器-kali工具 (第四章-4) 学习python强大的第三方库
本文内容:
- 了解Python的第三方库
- 安装第三方库
- 使用第三方库
Python第三方库的学习
1,了解Python的第三方库:
如果用手机来比喻变成语言,那么python是一款智能机,正如海量的手机应用处在IOS,Andriid平台上,同样有各种各样的第三方库为python开发者提供了极大的便利。
当你想搭建网站时可以选择功能全面的Django,轻量Flask等Web框架;
当你想写一个小游戏的时候,可以使用pycame框架;
当你想做一个爬虫时,可以使用scrapy;
当你想做数据统计分析的时候,可以使用pandas。
数据框架...这么多丰富资源可以帮助我们高校快捷地做到想做的事,就不需要在重新造轮子了。
参考网站:
https://docs.python.org/zh-cn/3.7/library/index.html
https://zhuanlan.zhihu.com/p/27350980
快速找到Python第三方库:
https://awesome-python.com
python官方手册
浏览器搜索
2,安装第三方库:
1.最简单的方式:[在PyCharm中安装]
1.在PyCharm的菜单中选择:File->Default Settings
2.搜索project Interpreter 选择当前版本[Python环境] 点击"+"添加库。
3.输入库的名称 勾选并点击Install Package。
2.最直接的方式:在终端/命令行中安全
安装pip,
在pip3.4之后,安装好python环境就可以直接支持pip,可以在终端/命令行输入这一句检查一下:pip --version
如果显示pip的版本,就说明pip已经成功安装,如果发现没有安装pip的话,各系统的方法不同:
1.Windows用户,请查看:https://www.cnblogs.com/baiyuer/p/9606773.html
2.Mac用户,请查看:https://www.jianshu.com/p/263b9107a047
3.Linxu用户,请查看:https://www.cnblogs.com/zhongyehai/p/10619917.html
使用pip安装库:
在安装好pip之后,以后安装库,只需要在命令行输入:[如果你想安装到python2中,需要把pip3换成pip]
如:pip install PackageName
如果你安装了Python2和3两种版本,可能会遇到安装目录的问题,可以换成:[如果你想安装到python2中,需要把pip3换成pip]
如:Python3 -m pip install PackageName
如果遇到权限问题:可以输入:sudo pip install PackageName
安装成功后会提示:Successfully installed PackageName
pip常用的指令:
pip install --upgrade pip 升级pip如果使用报错,可以在后加上-i 然后python pip源
pip uninstall flask 卸载库
pip list 查看已安装库
异常情况:安装某些库的时候可能会遇到所依赖的另一个库还没安装,导致无法安装成功的情况,这时候的处理原则就是缺啥补啥。
比如:
提示缺少:service_identity
解决方法:pip install service_identit
3.最原始的方式:[手动安装]
为了应对异常情况,在提供一种最原始的方法:手动安装,往往是Windows用户需要用到这种方法:
进入pypi.python.org ,搜索你需要安装的库的名字,这时候有3种可能:
1.exe文件,这种最方便,下载满足你的电脑系统和python环境对应的exe,再依次next就可以安装了
2.whl类文件,好处在于可以自动安装依赖的包。
3.是源码,大概都是zip、tar.zip、tar.ba2格式的压缩包,这个方法要求用户已经安装了这个包所依赖的其他包。
例如:
pandas依赖于numpy,你如果不安装numpy,这个方法是无法成功安装pandas的,如果没有前两种类型的文件,那只能用这个了。
1、如果下载的是.whl类文件,下面是安装方法:
到命令行输入:pip install wheel 等待执行完成,不能报错[python2要换成pip]
从资源管理器中确认你下载的.whl类文件的路径,然后在命令行输入:cd C:\down load [此处需要改为你的路径,路径的含义就是文件所在文件夹,不包含这个文件名字本身]。
然后在命令行继续输入:pip install xxx.whl [xxx.whl是你下载的文件的完整文件名]
2.、如果你选择了下载源码压缩包,下面是安装方法:
解压包,进入解压好的文件,通常会看一个setup.py的文件,从资源管理器中确认你下载的文件路径,打开命令行[cmd]输入
cd C:\down load [此处需要改为你的路径,路径的含义就是文件所在文件夹,不包含这个文件名字本身]。
然后在命令行中继续输入:
python 3 setup.py install这个命令,就能把这个第三方库安装到系统中,也就是你的Python路径,
Windows大概是在C:\python3.5 [或2.7]\Lib\site=packages
想卸载库的时候,找到Python路径,进入site-packages文件夹,在里面删掉库文件就可以了。
3,使用第三方库:
在pycharm中输入库名字,就会自动提示补全。
1.os模块:[操作 系统接口模块]
在自动化测试中,经常需要查找操作文件,比如:
查找配置文件[从而读取配置文件的信息]
查找测试报告[从而发送测试报告邮件]
经常对大量文件和大量路径进行操作,这就依赖于os模块。
当前路径及路径下的文件:
os.getcwd() :查看当前所在路径 绝对路径
os.listdir(path) :列举目录下的所有文件
os.path.abspath(path) :返回path的绝对路径
os.path.getmtime(path) :返回文件或文件夹最后修改的时间
os.path.getatime(path) :返回文件或文件夹最后访问的时间
os.path.getctime(path) :返回文件或文件夹创建的时间
os.path.getsize(path) :返回文件或文件夹的大小,如果是空文件夹返回0
os.path.exists(path) :查看文件是否存在,存在True,否则返回False
注意:path是查看当前路径,所在变量,存在True,否则返回Flase
举例:
import os
path=os.getcwd()
print(path) 查看当前所在路径 绝对路径
print(os.listdir(path)) 列举目录下的所有文件
print(os.path.abspath(path)) 返回path的绝对路径
print(os.path.getmtime(path)) 返回文件或文件夹最后修改的时间
print(os.path.getatime(path)) 返回文件或文件夹最后访问的时间
print(os.path.getctime(path)) 返回文件或文件夹创建的时间
2.re模块:
python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,而正则表达式是对字符串进行模糊匹配,提取自己需要的字符串部分,它对所有的语言都通用。
注意:
re模块是Python独有的,正则表达式所有变成语言都可以使用。
re模块、正则表达式是对字符串进行操作,因为re模块中的方法大都借助于正则表达式。
如果经常需要用到真个表达式,就可以先存在来,返回一个列表。
pattern=re.compile(‘alex')
print(pattern.findall('alex is alex alex'))
findall:从左往右查找满足条件的字符,返回一个列表。
print(pattern.findall('alexasdfsadfsadfasdfasdfasfd is alex alex'))
举例:
例1: import re ppx=re.compile(‘is') 存储一个方法 tmp_a = 'you is name' pph = ppx.findall(tmp_a) 用这个方法进行匹配 print(pph) 例2: import re a = '123 675 ddd % you is name' print(re.findall('\w',a)) 匹配所有字母、下划线、数字 print(re.findall('\W',a)) 匹配所有非字母、下划线、数字 print(re.findall('^ac',a)) 从开头匹配字符串 一次 print(re.findall('an$',a)) 从结尾匹配字符串 print(re.findall('a.*c',a123c)) 从开头匹配到结尾
3.requests模块:
requests是用于Python语言编写,基于urllib,采用Apche2 Licensed开源协议的HTTP库它比urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求,Requests的哲学事宜PEP20的习语为中心开发的,所以它比urllib更加pythoner。
更重要的一点是它支持Python3
举例:
import requests模块
payload = {'key1':'value1','key2':'value2'}
r = requests.get('https://www.baidu.com',params=payload)
4.线程模块:[threading和thread]
在Python3中,通过threading模块提供线程的功能。
原来的thread模块已经废弃,但是threading模块中有个Thread类是模块中最主要的线程类,一定要记住!!!!
threading提供了一些使用的方法和属性:
例如:
theading模块包含以下的类:
Thread:基本线程类
Lock:互斥锁
RLock:可重入锁,使单一进程再次获得已持有的锁[递归锁]
Condition:条件锁,使得一个线程等待另一个线程满足特定条件,比如改变状态或某个值。
Semaphore:信号锁,为线程间共享的有限资源提供一个“”计算器“”,如果没有可用资源则会被阻塞。
Event:事件锁,任意数量的线程等待某个事件的发生,在该事件发生后所有线程被激活。
Timer:一种计时器
Barrier:python3.2新增的“阻碍”类,必须叨叨指定数量的线程后才可以继续执行。
想创建一个多线程的程序:
1.使用thread模块创建线程
2.使用threading模块
5.bs4:
简单来说,BeautifulSoup就是Python的一个HTML或XML的解析库,我们可以用它来方便地从网页中提取数据,官方的解释如下:
BeautifulSoup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。BeautifulSoup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时你仅仅需要说明一下原始编码方式就可以了。BeautifulSoup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。
所以说,利用它我们可以省去很多繁琐的提取工作,提高解析效率。
基本使用:https://blog.csdn.net/keer1303242749/article/details/86028045
6.sys和getopt:
Python提供了getopt模块来获取命令行参数。
Python中也可以所用sys的sys.argv来获取命令行参数:
sys.argv是命令行参数列表。
len(sys.argv)是命令行参数个数。
举例:
import sys
a = sys.argv[1]
b = sys.argv[2]
print(int(a)+int (b))
比如:
使用一些脚本的时候,txt.py "https://www.baidu.com"
txt.py 就是0
url 就是1
接收参数,去脚本代码中运行
python3命令行参数:https://www.runoob.com/python3/python3-command-line-arguments.html