【Python】Python库

内置模块

random模块(随机数)

模块导入

import random

模块方法

random.random()                      # 生成0-1之间的随机数
random.randrange(起始值,结束值,步长)    # 生成指定范围的随机数

random.choice(可迭代类型)              # 从可迭代对象中随机选值
random.shuffle(有序的可迭代类型)        # 打乱有序的可迭代类型

random.randint(起始值,结束值)          # 生成指定范围的随机整数
random.uniform(起始值,结束值)          # 生成指定范围的随机浮点数
random.sample(可迭代类型,选值个数)      # 可迭代类型中随机选出指定个数值

使用实例

import random

print(random.random())#输出:0.7830205152897808
print(random.randrange(1,10,2))#输出:7

print(random.choice(['a','b','c']))#输出:a
a=[1,2,3,4,5]
random.shuffle(a)
print(a)#输出:[4, 2, 1, 5, 3]

print(random.randint(1,100))#输出:15
print(random.uniform(1,100))#输出:87.51446121807244

print(random.sample([1,2,3,4,5],2))#输出:[5, 2]

json模块(json数据处理)

模块导入

import json

模块方法

json.dumps(字典内容)   # 字典转json类型
json.dump(内容,fp=f)  # 字典转json类型写入文件
json.loads(json内容)  # json转字典类型
json.load(fp=f)      # 读取json文件成字典类型

相关内容

JSON	       Python
---------------------
object	        dict
array	        list
string	        str
number (int)	int
number (real)	float
true	        True
false	        False
null	        None

hashlib模块(字符编码)

模块导入

import hashlib

模块方法

加密类型有:md5 sha1 sha256 sha512 sha384
result=hashlib.new(‘加密类型’,加密内容.encode())
result.hexdigest()
result=hashlib.pbkdf2_hmac(‘加密类型’,加密内容,,加密次数)
result.digest()

base64模块(url编码)

模块导入

import base64

模块方法

result=base64.b64encode(内容.encode())
a=base64.b64decode(内容)
result=base64.urlsafe_b64encode(内容.encode())
result.urlsafe_b64decode()

time模块(日期时间)

在这里插入图片描述

模块导入

import time

模块方法

time.time()              # 获取时间戳
time.localtime()         # 获取时间元组 返回结果为时间类型
tm_min=48, tm_sec=10, tm_wday=0, tm_yday=231, tm_isdst=0)
time.strftime("%Y-%m-%d %H:%M:%S",时间类型)时间类型格式化为字符串

t=time.localtime(time.time())# 时间戳转换为时间类型
t.tm_sec 返回int型 获取秒钟
t.tm_min 返回int型 获取分钟
...
时间类型
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=19, tm_hour=13, tm_min=48, tm_sec=10, tm_wday=0, tm_yday=231, tm_isdst=0)

datetime模块(日期时间)

模块导入

import datetime

模块方法

datetime.datetime.now()                    # 获取当前日期时间
datetime.date.utcnow()                     # 获取格林威治时间
时间日期.timestamp()                        # 时间日期转化为时间戳
datetime.datetime.fromtimestamp(时间戳)    # 时间戳转化为时间日期
时间日期类型.strftime(%y-%m-%d  %H-%M-%S’) # 日期转字符串
datetime.strptime(str,’字符串的时间格式’)    # 字符串转日期
**格式化输出**
%a	缩写工作日
%A	完整的工作日
%b	缩写月
%B	全月
%c	日期和时间表示法适用于地区
%d	以十进制数表示的月份日(01 - 31)
%H	小时24小时格式(00 - 23)
%I	12小时制(01 - 12小时)
%j	以十进制数表示的年份(001 - 366)
%m	月为十进制数(01 - 12)
%M	分钟为十进制数(00 - 59)
%p	当前语言环境的上午/下午指标12小时时钟
%S	二是小数(00 - 59)
%U	一周为十进制数,周日为一周的第一天(00 - 51)
%w	工作日为十进制数(0 - 6;周日为0)
%W	一周为十进制数,周一为一周的第一天(00 - 51)
%x	当前区域设置的日期表示。
%X	当前语言环境的时间表示
%y	没有世纪的年份,如十进制数(00 - 99)
%Y	年与世纪,作为十进制数
%z,%Z	时区名称或缩写;如果时区未知,则没有字符

**自定义日期时间**
a=datetime.date(,,) 打印显示2019-3-5
获取年a.year
获取月a.month
获取日a.day
a=datetime.time(小时,,,毫秒)
获取小时a.hour
获取分钟a.minute
获取秒钟a.second
获取毫秒a.microsecond
a=datetime.datetime(,,,小时,,,毫秒)
获取年a.year
获取月a.month
获取日a.day
获取小时a.hour
获取分钟a.minute
获取秒钟a.second
获取毫秒a.microsecond
获取星期a.isoweekday()
获取年周星期a.isocalender()
获取年a.isocalender()[0]
获取周数a.isocalender()[1]
获取星期a.isocalender()[2]
**设置时间间隔**
t_interval=datetime.timedelta(weeks=0,days=0,hours=0,minutes=0,seconds=0,microseconds=0,milliseconds=0)
时间类型可以直接相减

logging模块(监控日志)

格式化输出
%(name)s Logger的名字
%(levelname)s 文本形式的日志级别
%(message)s 用户输出的消息
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(levelno)s 数字形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID
Loging中的级别:NOTSET<DEBUG<INFO<WARNING<ERROR<CRITICAL
#实例化
logger=logging.getLogger(‘dyv’)
logger.setLevel(logging.DEBUG)
#控制台输出
sh=logging.StreamHandler()
sh.setLevel(logging.WARNING)
#写入文件中
fh=logging.FileHandler(‘logginfile.log’,encoding=‘utf8’)
fh.setLevel(logging.WARNING)
#格式化输出
formatter=logging.Formatter(
‘级别:%(levelname)s’
‘日志名:%(name)s’
‘内容:%(message)s’
‘时间:%(asctime)s’
)
sh.setFormatter(formatter)
fh.setFormatter(formatter)
#激活
logger.addHandler(sh)
logger.addHandler(fh)
logger.warning(‘error’)

os模块(文件目录处理)

模块导入

import os

模块使用

os.remove(file_dress)       # 删除文件
os.rename(old,new)          # 文件重命名
os.getcwd()                 # 获得绝对路径
os.removedirs()             # 移除多级目录
os.rmdir()                  # 移除空目录
os.stat()                   # 文件状态
os.mkdir()                  # 创建文件夹
os.mknod()                  # 创建一个文本文件
os.exit()                   # 终止当前进程
os.listdir()                # 列出目录下的全部目录和文件
os.system(“cmd”)            # cmd为操作系统命令
os.path.isfile()            # 是否是文件
os.path.isdir()             # 是否是目录
os.path.isabs()             # 是否是绝对路径
os.path.islink()            # 是否是快捷方式
os.path.exists()            # 文件是否存在
os.path.basename()          # 根文件名
os.path.dirname()           # 文件的上级目录地址
os.path.split()             # 路径分割
os.path.splitext()          # 分割文件后缀名
os.path.getsize()           # 获取文件字节大小
os.path.join(m,n)           # 文件目录拼接

shutil模块(文件目录处理)

模块导入

import shutil

模块方法

shutil.copyfile(oldfile,newfile)    # 文件复制
shutil.copytree(oldfile,newfile)    # 文件目录复制
shutil.copy(oldfile,newfile/newtree)# 文件/文件目录复制
shutil.move(oldfile,newfile)        # 文件移动
shutil.rmtree()                     # 空目录、有内容的目录都可以删
shutil.chdir()                      # 文件目录改变 

第三方模块

pyttsx3模块(语音播报)

模块导入

import pyttsx3

模块方法

#实例化
engine = pyttsx3.init()
#语音播报内容
engine.say('你好')
#事假队列执行完毕后返回None
engine.runAndWait()

rate = engine.getProperty('rate')
#获取播报速度
volume = engine.getProperty('volume')
#获取播报音量
voices = engine.getProperty('voices')
#获取播报发音
v=engine.getProperty('voices')[1]

#设置播报速度
rate = engine.setProperty('rate','150')
#设置播报音量
volume = engine.setProperty('volume','1')
#设置获取播报发音
voices = engine.setProperty('voices',v)

使用实例

import pyttsx3
def get_content(dress):
    with open(dress) as f:
        data=f.read()
    return data

engine = pyttsx3.init()

engine.say(get_content('文本文件地址'))

engine.runAndWait()

schedule模块(定时任务)

模块导入

# 安装模块
pip3 install schedule
# 导入模块
import schedule

模块方法

# 按每秒/分/小时/天的定时任务 job为函数名
schedule.every().second.do(job)      # 每秒钟执行一次
schedule.every().minute.do(job)      # 每分钟执行一次
schedule.every().hour.do(job)        # 每小时执行一次
schedule.every().day.do(job)         # 每天执行一次
#指定具体时间
schedule.every().day.at("10:30")     # 每天10:30执行一次

# 按多秒/分/小时/天的定时任务
schedule.every(2).seconds.do(job)    # 每2秒钟执行一次
schedule.every(2).minutes.do(job)    # 每2分钟执行一次
schedule.every(2).hours.do(job)      # 每2小时执行一次
schedule.every(2).days.do(job)       # 每2天执行一次

# 按星期指定执行的定时任务
schedule.every().monday.do(job)      # 每个星期一执行一次
schedule.every().tuesday.do(job)     # 每个星期二执行一次
schedule.every().wednesday.do(job)   # 每个星期三执行一次
schedule.every().thursday.do(job)    # 每个星期四执行一次
schedule.every().friday.do(job)      # 每个星期五执行一次
schedule.every().saturday.do(job)    # 每个星期六执行一次
schedule.every().sunday.do(job)      # 每个星期天执行一次
#指定具体时间
schedule.every().friday.at("10:30").do(job)# 每个星期五10:30执行一次

使用实例

#-*-encoding:utf-8-*-
#定时任务与多线程结合使用
import schedule
import threading
import time

def job():
    print('this is job!')
    
def task1():
    schedule.every().second.do(job)

def task2():
    schedule.every().minute.do(job)

def run():
    tk1=threading.Thread(target=task1).start()
    tk2=threading.Thread(target=task2).start()

run()
while True:
    schedule.run_pending()
    time.sleep(1)

selenium模块(浏览器自动化)

安装模块:pip install selenium

from selenium import webdriver

浏览器驱动配置选项

#实例化驱动配置
options = webdriver.ChromeOptions()
#设置为开发者模式,防止被各大网站识别出来使用了Selenium
options.add_experimental_option('excludeSwitches', ['enable-automation'])
#浏览器设置为不加载图片数据
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
#禁止浏览器弹窗
options.add_experimental_option('prefs',{'profile.default_content_setting_values':{'notifications' : 2}}) 
#实例化浏览器传入驱动地址和驱动配置参数
browser = webdriver.Chrome(executable_path=r'D:\软件包\Chrome\Application\chromedriver.exe',options=options)

浏览器无界面模式

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_opt = Options()      # 创建参数设置对象.
chrome_opt.add_argument('--headless')   # 无界面化.
chrome_opt.add_argument('--disable-gpu')    # 配合上面的无界面化.
chrome_opt.add_argument('--window-size=1366,768')   # 设置窗口大小, 窗口大小会有影响.
browser = webdriver.Chrome(executable_path=r'D:\软件包\Chrome\Application\chromedriver.exe',options=chrome_opt)
browser.get('http://www.baidu.com')
print(browser.title)

浏览器驱动设置

#网络设置
browser.set_network_conditions( offline=False,
                latency=5,  # additional latency (ms)
                download_throughput=500 * 1024,  # maximal throughput
                upload_throughput=500 * 1024)  # maximal throughput)
#窗口大小
browser.set_window_size(600,900)
#浏览器位置
browser.set_window_position(0,0)
#同时设置浏览器位置和大小
browser.set_window_rect(0,0,600,900)
#页面加载超时报错时间
browser.set_page_load_timeout(5)
#脚本执行超时报错时间
browser.set_script_timeout(8)

获取相关信息

browser.page_source#获取网页源代码

browser.name#获取浏览器名称

browser.current_url#获取当前网页url

browser.title#获取网页的标题

browser.window_handles#获取当前会话中所有窗口的句柄

browser.application_cache#获取应用缓存地址

browser.capabilities#获取主要的功能设置

browser.command_executor#代表远程服务的url

browser.get_window_size()#获取窗口大小

browser.get_window_position()#获取窗口位置

browser.get_window_rect()#获取窗口位置和大小

browser.get_screenshot_as_base64()#捕获屏幕图片为base64格式信息

browser.get_screenshot_as_file('图片名.png')#捕获屏幕保存为图片

浏览器普通按钮操作

browser.get('http://www.baidu.com')#获取网页

browser.refresh()#网页刷新

browser.forward()#前进

browser.back()#后退

browser.click()#单击

browser.submit()#提交表单

browser.send_keys()#输入字符串

browser.close()#关闭当前页面

browser.quit()#关闭浏览器

浏览器特殊按钮操作

# 要使用按键值, 需要导入下面keys.
from selenium.webdriver.common.keys import Keys
elem.send_keys(Keys.CONTROL, 'c')

定位元素

#使用 class值 定位
browser.find_element_by_class_name('class_name_value')
#使用 name值 定位
browser.find_element_by_name('name_value')
#使用 id值 定位
browser.find_element_by_id('id_value')
#使用 xpath表达式 定位
browser.find_element_by_xpath('//div[@id='1']')
#使用 css选择器 定位
browser.find_element_by_css_selector('#p')
#使用 链接文本 定位
browser.find_element_by_link_text(‘更多热点’)
#使用 链接部分文本 定位
browser.find_element_by_partial_link_text(‘更多’)
#通用方法定位
#By.ID
#By.TAG_NAME
#By.CLASS_NAME
#By.NAME
browser.find_element(By.ID,'id_value')

操作被定位元素

b=browser.find_element_by_class_name('search-box-btn')

b.text#获取文本值
b.location#获取定位坐标
b.id#获取id值
b.tag_name#获取标签名
b.size#获取元素长宽
b.parent#获取网页来源session
b.rect#获取坐标位置和元素长宽
b.screenshot_as_png#获取元素截图png二进制数据

窗口操作

js = 'window.open("http://www.baidu.com");'    #打开新窗口
browser.execute_script(js)#执行js代码
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值