Selenium 爬虫常用技巧(pyautogui,pyperclip )

1. PyautoGui常用教程(鼠标、键盘)

1.1 设置

# 意味着所有pyautogui的指令都要暂停一秒;其他指令不会停顿;这样做,可以防止键盘鼠标操作太快;
pyautogui.PAUSE = 1
 
# 默认这项功能为True, 这项功能意味着:当鼠标的指针在屏幕的最坐上方,程序会报错;目的是为了防止程序无法停止
pyautogui.FAILSAFE =False

1.2 鼠标操作

1.2.1 获取屏幕分辨率

# **获取屏幕分辨率**
print(pyautogui.size()) # 返回所用显示器的分辨率; 输出:Size(width=1920, height=1080)
width,height = pyautogui.size()
print(width,height) # 1920 1080

1.2.2 鼠标移动事件,以及鼠标位置

# 向右移动100px,向下移动500px, 这个过程持续 1 秒钟;
pyautogui.moveTo(100,300,duration=1)

print(pyautogui.position())  
# 得到当前鼠标位置;输出:Point(x=200, y=800)

1.2.3 鼠标点击操作

# 单击鼠标 
pyautogui.click(10,10) # 鼠标点击指定位置,默认左键 
pyautogui.click(10,10,button='left') # 单击左键
pyautogui.click(1000,300,button='right') # 单击右键 
pyautogui.click(1000,300,button='middle') # 单击中间

# 双击鼠标
pyautogui.doubleClick(10,10) # 指定位置,双击左键 
pyautogui.rightClick(10,10) # 指定位置,双击右键
pyautogui.middleClick(10,10) # 指定位置,双击中键

# 鼠标点击与释放
pyautogui.mouseDown() # 鼠标按下
pyautogui.mouseUp() # 鼠标释放

# 鼠标控制拖动事件 
pyautogui.dragTo(100,300,duration=1)
   
# 按方向拖动 向右拖动100px,向下拖动500px, 这个过程持续 1 秒钟
pyautogui.dragRel(100,500,duration=4) # 第一个参数是左右移动像素值,第二个是上下

# 鼠标滚轮
# 控制鼠标滚动的函数是scroll(), 传入一个整数的参数,说明向上或向下滚动多少个单位;单位根据操作系统不同而不同
pyautogui.scroll(300) # 向下滚动300个单位;

1.3 键盘操作

键盘输入函数

  • pyautogui.keyDown() : 模拟按键按下; pyautogui.keyUp() : 模拟按键释放;
  • pyautogui.press() : # 就是调用keyDown() & keyUp(),模拟一次按键;
  • pyautogui.typewrite(‘this’,0.5) : 第一参数是输入内容,第二个参数是每个字符间的间隔时间;
  • pyautogui.typewrite([‘T’,‘h’,‘i’,‘s’]):typewrite 还可以传入单字母的列表;
# 键盘事件
pyautogui.keyDown('shift') # 按下shift
pyautogui.press('4') # 按下 4 
pyautogui.keyUp('shift') # 释放 shift

# 缓慢输出
pyautogui.typewrite('$*……%……¥', 0.5)

# 键盘特殊顺序输出
pyautogui.typewrite(['T','i','s','left','left','h',])   # 输出:This

# 快捷键
pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('c')
pyautogui.keyUp('ctrl')

# 组合键
pyautogui.hotkey('ctrl','c')

1.4 屏幕处理

屏幕截图,pyautogui提供了一个方法screenshot(),可以返回一个Pillow的image对象

im = pyautogui.screenshot() # 返回屏幕的截图,是一个Pillow的image对象
im.getpixel((500, 500)) # 返回im对象上,(500,500)这一点像素的颜色,是一个RGB元组
pyautogui.pixelMatchesColor(500,500,(12,120,400)) # 是一个对比函数,对比的是屏幕上(500,500)这一点像素的颜色,与所给的元素是否相同;

# 截图操作
im = pyautogui.screenshot() 
im.save('屏幕截图.png')

2. pyautogui无法输入中文(使用ctrl + v 粘贴命令)

pyautogui的write、typewrite、press等方法均无法输入中文,可以用pyperclip包,pyperclip.copy(‘中国’) ,然后使用pyautogui.hotkey(‘ctrl’,‘v’)来操作。记住中间要有个time.sleep(1) 停顿1秒,要不会粘贴不上去

pyperclip.copy('中文.pdf')
pyautogui.hotkey('ctrl', 'v')

3. 使用Python获取元素的坐标或尺寸

p_btn = driver.find_element(By.XPATH, '//*[@id="buttonsTr"]/td/input[9]')
p_location = p_btn.location
p_size = p_btn.size
print(p_location)
print(p_size)
p_x = p_location['x'] + p_size['width'] // 2
p_y = p_location['y'] + p_size['height'] // 2
pyautogui.moveTo(p_x + 2040, p_y + 180, duration=0.5)
pyautogui.click()
# 输出结果
{'y': 100, 'x': 205}
{'width': 87, 'height': 122}

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