渗透利器-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]Libsite=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

原文地址:https://www.cnblogs.com/xz25/p/12874000.html