requests和bs4和pdf处理和subprocess进程控制和控制鼠标键盘和连接数据库

requests和bs4和pdf处理和subprocess进程控制和控制鼠标键盘和连接数据库_第1张图片

requests和bs4和pdf处理和subprocess进程控制和控制鼠标键盘和连接数据库_第2张图片

soup.select('div') 所有名为<div>的元素
soup.select('#author') 带有id 属性为author 的元素
soup.select('.notice') 所有使用CSS class 属性名为notice 的元素
soup.select('div span') 所有在<div>元素之内的<span>元素
soup.select('div > span') 所有直接在<div>元素之内的<span>元素,中间没有其他元素
soup.select('input[name]') 所有名为<input>,并有一个name 属性,其值无所谓的元素
soup.select('input[type="button"]') 所有名为<input>,并有一个type 属性,其值为button 的元素

request模拟登陆:
#!/usr/bin/env python
# Author:yeng
import requests,json
login_url = '要登陆的url'
s = requests.session()
data = {'email':'989898','password':'admin'}
datas = json.dumps(data)
#post 换成登录的地址,
hers = {'content-type':'application/x-www-form-urlencoded',
        'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
res=s.post(login_url,datas,headers = hers)
#换成抓取的地址
print(res.text)



isalpha()返回True,如果字符串只包含字母,并且非空;
isalnum()返回True,如果字符串只包含字母和数字,并且非空;
isdecimal()返回True,如果字符串只包含数字字符,并且非空;
isspace()返回True,如果字符串只包含空格、制表符和换行,并且非空;
istitle()返回True,如果字符串仅包含以大写字母开头、后面都是小写字母的单词
isupper()主符串是否全为大写  并且非空
islower()字符串是否全为小写   并且非空

连接数据库:
import pymysql.cursors
connection = pymysql.connect(host = 'localhost',
                            user = 'root',
                            password = '123456',
                            db = 'mydb',
                            charset = 'utf8mb4')

try:
    #获取会话指针
    with connection.cursor() as cursor:
    #创建sql 语句
    sql = “insert into `表名` (`name`,`sex`)  values(%s,%s)#执行sql语句
    cursor.execute(sql,("用变量循环写入的内容1""用变量写入的内容2"))
    #提交
    connection.commit()
finally:
    connection.close()

合并pdf:
#------------------合并pdf--------------------------
from PyPDF2 import PdfFileReader, PdfFileWriter

def split_pdf(infn, outfn):
    pdf_output = PdfFileWriter()
    pdf_input = PdfFileReader(open(infn, 'rb'))
    # 获取 pdf 共用多少页
    page_count = pdf_input.getNumPages()
    print(page_count)
    # 将 pdf 第五页之后的页面,输出到一个新的文件
    for i in range(5, page_count):
        pdf_output.addPage(pdf_input.getPage(i))
    pdf_output.write(open(outfn, 'wb'))

def merge_pdf(infnList, outfn):
    pdf_output = PdfFileWriter()
    for infn in infnList:
        pdf_input = PdfFileReader(open(infn, 'rb'))
        # 获取 pdf 共用多少页
        page_count = pdf_input.getNumPages()
        print(page_count)
        for i in range(page_count):
            pdf_output.addPage(pdf_input.getPage(i))
    pdf_output.write(open(outfn, 'wb'))

if __name__ == '__main__':
    infn = 'c:\\11.pdf'
    outfn = 'c:\\12.pdf'
    split_pdf(infn, outfn)

----------------------------------pdf转word----------打印出来文字---------------------
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import pdfminer
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice

fp = open('c:\\培训脚本-20160810.pdf','rb')

#创建文档解析器
parser = PDFParser(fp)
#创建对象
doc = PDFDocument()
#连接解析器和对象
parser.set_document(doc)
doc.set_parser(parser)

#初始化文档
doc.initialize("") #没有密码为空

#创建PDF资源管理器
rsource = PDFResourceManager()

#分析器
laparam = LAParams()#这个函数没有,把光标定在括号前面按alt+回车键导入

#创建聚合器
divce = PDFPageAggregator(rsource,laparams=laparam)#这个一样要alt+回车导入

#创建PDF页面解析器
interpreter = PDFPageInterpreter(rsource,divce)

#使用文档对象得集合
for page in doc.get_pages():
    #使用页面解析器来读取
    interpreter.process_page(page)
    #使用聚合器来得内容
    layout = divce.get_result()
    for out in layout:
        if hasattr(out,"get_text"): #查看out是有get_text方法,有了才执行下面的
            out_utf8 = out.get_text()
            print(out_utf8)

-----------------------------pdf不转处理完还是pdf-----------------------------------------
import PyPDF2,docx

pdf_file = open('c:\\11.pdf','rb')
pdfread = PyPDF2.PdfFileReader(pdf_file)

pdfpages = pdfread.getNumPages() #获取总页数
print(pdfpages)

page = pdfread.getPage(11) #要读取的页数
pdf_output = PyPDF2.PdfFileWriter()
pdf_output.addPage(page)

outs = open('c:\\12.pdf','wb') #把读取到的那页pdf单独保存为一个pdf,名字12.pdf
pdf_output.write(outs)
outs.close()


------------------------subprocess子进程控制-----------------------
#!/usr/bin/env python
# _*_ coding:utf-8 _*_

import subprocess
#---------------------------------------------
# dirs = subprocess.call(['dir'],shell=True)
# print(dirs) #输出0为正确,1为错误
#------------一直执行下去ping全部ip------------------
# ping = subprocess.call(['ping','-n','2','192.168.1.99'],shell=True)
# print(ping)
# ping2 = subprocess.call(['ping','-n','2','www.qq.com'],shell=True)
# print(ping2)
#--------------------------------------------
# ping = subprocess.Popen(['ping','-n','2','www.qq.com'])
# ping.wait()#上面执行完再执行下面的,不加这个他会先执行下面的print
# ping.terminate() #终止进程
# ping.kill()#终止子进程
#------管道符输出-----------------------------------
show_port = subprocess.Popen(['netstat','-ano'],stdout=subprocess.PIPE)
show_port2 = subprocess.Popen(['findstr','80'],stdin=show_port.stdout,stdout=subprocess.PIPE)
outs = show_port2.communicate()
out_list = str(outs)
for i in out_list.split(r'\r\n'):#切割完后是个列表,可以遍历
    print(i)

----------python跳过ssl不信任证书报错-----------------------
ssl._create_default_https_context = ssl._create_unverified_context


-----------------pyautogui操作键盘和鼠标----------------------------------------
#!/usr/bin/env python
# Author:yeng

import pyautogui,time
# screenWidth, screenHeight = pyautogui.size()
# pyautogui.moveTo(screenWidth / 2, screenHeight / 2) #屏目上下各一半的位置,刚好是正中间
# # print(pyautogui.size()) #获取屏目分辨率
#
# click()函数模拟单击鼠标左键一次的行为。例如:
# pyautogui.click()
# 如果单机之前要先移动,可以把目标的XY坐标值传入函数:
#
# #  先移动到(100, 200)再单击
# pyautogui.click(x=100, y=200, duration=2)
# 可以通过button参数设置left,middle和right三个键。例如:
#
# pyautogui.click(button='right')
# 要做多次单击可以设置clicks参数,还有interval参数可以设置每次单击之间的时间间隔。例如:
#
#
# #  双击左键
# pyautogui.click(clicks=2)
# #  两次单击之间停留0.25秒
# pyautogui.click(clicks=2, interval=0.25)
# #  三击右键
# pyautogui.click(button='right', clicks=2, interval=0.25)
# 为了操作方便,PyAutoGUI提供了doubleClick(),tripleClick()和rightClick()来实现双击、三击和右击操作。
#
# #-------------------------------------------------------------------------------
# screenWidth, screenHeight = pyautogui.size()
# currentMouseX, currentMouseY = pyautogui.position()
# pyautogui.moveTo(100, 150)
# pyautogui.click()
# #  鼠标向下移动10像素
# pyautogui.moveRel(None, 10)
# pyautogui.doubleClick()
# #  用缓动/渐变函数让鼠标2秒后移动到(500,500)位置
# #  use tweening/easing function to move mouse over 2 seconds.
# pyautogui.moveTo(1800, 500, duration=2, tween=pyautogui.easeInOutQuad)
# #  在每次输入之间暂停0.25秒
# pyautogui.typewrite('Hello world!', interval=0.25)
# pyautogui.press('esc')
# pyautogui.keyDown('shift')
# pyautogui.press(['left', 'left', 'left', 'left', 'left', 'left'])
# pyautogui.keyUp('shift')
# pyautogui.hotkey('ctrl', 'c')
#
# distance = 200
# while distance > 0:
#     pyautogui.dragRel(distance, 0, duration=0.5) # 向右
#     distance -= 5
#     pyautogui.dragRel(0, distance, duration=0.5) # 向下
#     pyautogui.draIn gRel(-distance, 0, duration=0.5) # 向左
#     distance -= 5
#     pyautogui.dragRel(0, -distance, duration=0.5) # 向上

# pyautogui.PAUSE = 20.5 #增加延迟时间
# pyautogui.moveTo(100,100)
# pyautogui.click()
#
# #  当前鼠标的坐标
# pyautogui.position()

#  (x,y)是否在屏幕上
# x, y = 122, 244
# screens = pyautogui.onScreen(x, y)
# print(screens)
#

# click()函数就是让鼠标点击,默认是单击左键,参数可以设置:
#pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button='left')
# 其中,button属性可以设置成left,middle和right。

# 鼠标右键,中键,双击
# pyautogui.rightClick(x=moveToX, y=moveToY)
# pyautogui.middleClick(x=moveToX, y=moveToY)
# pyautogui.doubleClick(x=moveToX, y=moveToY)
# pyautogui.tripleClick(x=moveToX, y=moveToY)
#
# scroll函数控制鼠标滚轮的滚动,amount_to_scroll参数表示滚动的格数。正数则页面向上滚动,负数则向下滚动:
# pyautogui.scroll(clicks=amount_to_scroll, x=moveToX, y=moveToY)
# 每个按键按下和松开两个事件可以分开处理:
# pyautogui.mouseDown(x=moveToX, y=moveToY, button='left')
# pyautogui.mouseUp(x=moveToX, y=moveToY, button='left')

#--------------------------键盘-----------------------------------

# 键盘控制的主要函数就是typewrite()。这个函数可以实现字符输入。要在两次输入间增加时间间隔,可以用interval参数。例如:
# 
# #  输入Hello world!
# pyautogui.typewrite('Hello world!')
# #  每次输入间隔0.25秒,输入Hello world!
# pyautogui.typewrite('Hello world!', interval=0.25)
# typewrite()函数只能用于单个字符键,不能按SHITF和F1这些功能键。
# 
# 6.2 press(),keyDown()和keyUp()函数
# 要按那些功能键,可以用press()函数把pyautogui.KEYBOARD_KEYS里面按键对应的字符串输入进去。例如:
# 
# #  ENTER键
# pyautogui.press('enter')
# #  F1键
# pyautogui.press('f1')
# #  左方向键
# pyautogui.press('left')
# press()函数其实是keyDown()和keyUp()函数的包装,模拟的按下然后松开两个动作。
# 这两个函数可以单独调用。例如,按下shift键的同时按3次左方向键:
# 
# #  按下`shift`键
# pyautogui.keyDown('shift')
# pyautogui.press('left')
# pyautogui.press('left')
# pyautogui.press('left')
# #  松开`shift`键
# pyautogui.keyUp('shift')
# 和typewrite()函数一样,可以用数组把一组键传入press()。例如:
# 
# pyautogui.press(['left', 'left', 'left'])
# 6.3 hotkey()函数
# 为了更高效的输入热键,PyAutoGUI提供了hotkey()函数来绑定若干按键:
# 
# pyautogui.hotkey('ctrl', 'shift', 'ese')
# 等价于:
# pyautogui.keyDown('ctrl')
# pyautogui.keyDown('shift')
# pyautogui.keyDown('esc')
# pyautogui.keyUp('esc')
# pyautogui.keyUp('shift')
# pyautogui.keyUp('ctrl')
# 6.4 KEYBOARD_KEYS
# 下面就是press(),keyDown(),keyUp()和hotkey()函数可以输入的按键名称:
# 
# print(pyautogui.KEYBOARD_KEYS)
# ['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", 
# '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', 
# '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', 
# '@', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 
# 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
#  'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', 
#  '~', 'accept', 'add', 'alt', 'altleft', 'altright', 'apps',
#   'backspace', 'browserback', 'browserfavorites', 'browserforward', 
#   'browserhome', 'browserrefresh', 'browsersearch', 'browserstop',
#    'capslock', 'clear', 'convert', 'ctrl', 'ctrlleft', 'ctrlright', 
#    'decimal', 'del', 'delete', 'divide', 'down', 'end', 'enter', 
#    'esc', 'escape', 'execute', 'f1', 'f10', 'f11', 'f12', 'f13', 
#    'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20', 'f21',
#     'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',
#      'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 
#      'insert', 'junja', 'kana', 'kanji', 'launchapp1', 'launchapp2',
#       'launchmail', 'launchmediaselect', 'left', 'modechange', 
#       'multiply', 'nexttrack', 'nonconvert', 'num0', 'num1', 'num2',
#        'num3', 'num4', 'num5', 'num6', 'num7', 'num8', 'num9', 
#        'numlock', 'pagedown', 'pageup', 'pause', 'pgdn', 'pgup', 
#        'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn', 
#        'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 
#        'separator', 'shift', 'shiftleft', 'shiftright', 'sleep', 'stop', 
#        'subtract', 'tab', 'up', 'volumedown', 'volumemute', 'volumeup', 
#        'win', 'winleft', 'winright', 'yen', 'command', 'option', 
#        'optionleft', 'optionright']
# 7 消息弹窗函数
# PyAutoGUI通过Tkinter实现了4种纯Python的消息弹窗函数,和JavaScript类似。
# 
# 7.1 alert()函数
# pyautogui.alert(text='', title='', button='OK')
# 'OK'
# 显示一个简单的带文字和OK按钮的消息弹窗。用户点击后返回button的文字。
# 
# 7.2 The confirm() Function
# #  OK和Cancel按钮的消息弹窗
# pyautogui.confirm(text='', title='', buttons=['OK', 'Cancel'])
# #  10个按键0-9的消息弹窗
# pyautogui.confirm(text='', title='', buttons=range(10))
# '0'
# 显示一个简单的带文字、OK和Cancel按钮的消息弹窗,用户点击后返回被点击button的文字,支持自定义数字、文字的列表。
# 
# 7.3 The prompt() Function
# pyautogui.prompt(text='', title='' , default='')
# 可以输入的消息弹窗,带OK和Cancel按钮。用户点击OK按钮返回输入的文字,点击Cancel按钮返回None。
# 
# 7.4 The password() Function
# pyautogui.password(text='', title='', default='', mask='*')
# 样式同prompt(),用于输入密码,消息用*表示。带OK和Cancel按钮。用户点击OK按钮返回输入的文字,点击Cancel按钮返回None。



#  每次键入的时间间隔
# secs_between_keys = 0.1
# pyautogui.typewrite('Hello world!\n', interval=secs_between_keys) #当前鼠标焦点输入hello world!

#多个键也可以:
# secs_between_keys = 1
# #按列表输入键盘上的键名字,不是内容,最后按F1
# pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'], interval=secs_between_keys)

# time.sleep(5)
# secs_between_keys = 1
# pyautogui.typewrite(['wtu','!'],interval=secs_between_keys)

#键盘的一些热键像Ctrl-S或Ctrl-Shift-1都可以用hotkey()函数来实现:
# pyautogui.hotkey('ctrl', 'a') # 全选
# pyautogui.hotkey('ctrl', 'c') # 复制
#pyautogui.hotkey('ctrl', 'v') # 粘贴

# 每个按键的按下和松开也可以单独调用:
# pyautogui.keyDown(key_name)
# pyautogui.keyUp(key_name)

# 消息弹窗函数¶
# 如果你需要消息弹窗,通过单击OK暂停程序,或者向用户显示一些信息,消息弹窗函数就会有类似JavaScript的功能:
# pyautogui.alert('这个消息弹窗是文字+OK按钮')
# pyautogui.confirm('这个消息弹窗是文字+OK+Cancel按钮')
# pyautogui.prompt('这个消息弹窗是让用户输入字符串,单击OK') 可以接收用户输入并赋值给变量,
#在prompt()函数中,如果用户什么都不输入,就会返回None。

你可能感兴趣的:(python,python)