美文网首页python爬虫程序员Python
Python爬虫杂记-操控鼠标

Python爬虫杂记-操控鼠标

作者: 董小贱 | 来源:发表于2018-06-16 17:30 被阅读182次

    头一段时间做了某网站的滑动验证码, 用的是阿里的滑动验证码。用自动化模拟滑块的拖动, 然而尝试了多种方法, 仍没能成功。最终得出结论,阿里的反爬做的太好了。虽然没能成功, 但是自动化的模拟点击拖动的经验算是积累了, 遂记录之....

    初始代码:
    # coding: utf-8
    from selenium import webdriver
    drivers =webdriver.Chrome()
    browser.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
    

    1. 通过ActionChains进行模拟点击拖动

    1.1 通过元素进行模拟点击拖动
    from selenium.webdriver import ActionChains
    drivers.switch_to.frame('iframeResult')   # 切换到指定的frame
    source = drivers.find_element_by_id('draggable')      # 被拖拽的对象
    target = drivers.find_element_by_id('droppable')      # 目标对象
    action = ActionChains(drivers)  # 实例action
    action.drag_and_drop(source, target)  # 将需要执行的步骤加入到对列
    action.perform() # 执行队列中的操作
    
    1.2 通过相对坐标模拟点击拖动
    from selenium.webdriver import ActionChains
    drivers.switch_to.frame('iframeResult')   # 切换到指定的frame
    source = drivers.find_element_by_id('draggable')      # 被拖拽的对象
    action = ActionChains(drivers) # 实例action
    action.click_and_hold(source).perform() #单击并保持
    action.move_by_offset(xoffset=250, yoffset=0) # 移动的距离, 相对坐标
    action.release(source) # 释放单击
    action.perform() # 执行队列中的操作
    

    注:这类方法更容易被反爬识别,这个操作更像是js执行的点击、拖动事件。

    2.通过pyautogui进行鼠标拖动(查看资料pyautogui是跨平台的)

    import pyautogui
    pyautogui.mouseDown(700, 400)  # 鼠标按下的坐标,相对于屏幕的左上角
    pyautogui.mouseUp(950, 388)  # 鼠标抬起的坐标,相对于屏幕的左上角
    

    总注:这两类不止能调用鼠标,也可以控制键盘。python中调用键鼠的方法很多,像在win中还有pywin32等等。 以上两种只是简单介绍了鼠标拖动的方式,算是处理滑动验证码的主要用的几种形式, 算是抛砖引玉。

    参考文章:
    pyautogui参考文章:csdn作者:蜗v牛
    ActionChains参考文章:csdn作者:huilan_same

    本人水平有限, 如有错误欢迎提出指正!如有参考, 请注明出处!!禁止抄袭,遇抄必肛!!!

    相关文章

      网友评论

      本文标题:Python爬虫杂记-操控鼠标

      本文链接:https://www.haomeiwen.com/subject/vnkzsftx.html