python怎么做导航自动化_【Python爬虫】: Selenium自动化进阶,它能做的不仅仅是爬虫...

哈喽,之前为大家介绍了Selenium的基本用法,使用Selenium获取网页源码再解析数据的方式来完成数据的爬取。

除此之外,它还有更多的进阶功能,今天在这里就位大家介绍用Selenium的鼠标键盘操作(ActionChains)和使用Selenium实现验证码破解。

仔细往下看,你会发现很多所谓的黑科技原来你也可以实现!

PART

01

用Selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽等等。而Selenium给我们提供了一个类来处理这类事件——ActionChains。

selenium.webdriver.common.action_chains.ActionChains(driver)

ActionChains类基本能够满足我们所有对鼠标操作的需求。

以下是罗列的ActionChains方法:

# 单击鼠标左键click(on_element=None)# 点击鼠标左键,不松开 click_and_hold(on_element=None)# 点击鼠标右键 context_click(on_element=None)# 双击鼠标左键 double_click(on_element=None)# 拖拽到某个元素然后松开 drag_and_drop(source,target)# 拖拽到某个坐标然后松开 drag_and_drop_by_offset (source,xoffset,yoffset) # 按下某个键盘上的键 key_down(value,element=None)# 松开某个键 key_up(value,element=None) # 鼠标从当前位置移动到某个坐标move_by_offset(xoffset,yoffset)# 鼠标移动到某个元素 move_to_element(to_element) # 移动到距某个元素(左上角坐标)多少距离的位置 move_to_element_with_offset (to_element,xoffset,yoffset)# 执行链中的所有动作 perform() # 在某个元素位置松开鼠标左键 release(on_element=None) # 发送某个键到当前焦点的元素 send_keys(*keys_to_send) # 发送某个键到指定元素 send_keys_to_element (element,*keys_to_send)

PART

02

接下来用亚马逊相关事例,来详细说明和演示每一个方法的用法:

1、点击操作:打开亚马逊→搜索“echo→自动翻页。

importtimefromseleniumimportwebdriver# 生成浏览器对象browser = webdriver.Firefox()# 使浏览器访问 https://www.amazon.com/。browser.get('https://www.amazon.com/')# 找到亚马逊的搜索框并输入‘echo’。browser.find_element_by_xpath('//*[@id="twotabsearchtextbox"]') .send_keys('echo')# 输入‘echo'后点击放大镜标志的搜索按钮。browser.find_element_by_xpath('//*[@id="nav-search"]/form/div[2]/div/input').click()# 在每页停顿5秒后,点击翻页按钮。while True:     time.sleep(5)     browser.find_element_by_xpath     ('//*[@id="pagnNextString"]').click()

2、鼠标移动:打开亚马逊→将鼠标移动到切换语言的按钮上→将鼠标移动到登陆按钮上。

importtimefromseleniumimportwebdriverfromselenium.webdriver.common. action_chainsimportActionChains# 生成浏览器对象browser = webdriver.Firefox()# 使浏览器访问 https://www.amazon.com/。browser.get('https://www.amazon.com/')# 找到亚马逊主页切换语言的element。language = browser.find_element_by_xpath('//*[@id="icp-nav-flyout"]')# 找到亚马逊主页登陆的element。sign_in = browser.find_element_by_xpath('//*[@id="nav-link-accountList"]')# 生成ActionChains对象。action = ActionChains(browser)# 将鼠标移动到亚马逊主页切换语言的element。action.move_to_element(language).perform() time.sleep(5)# 将鼠标移动到亚马逊主页登陆的element。action.move_to_element(sign_in).perform() time.sleep(5)# 将鼠标移动到亚马逊主页登陆的element。action.move_to_element(sign_in).perform() time.sleep(5)

3、拖拽:将亚马逊主页的Logo拖入搜索框中。(可用于破解滑块验证码中)

fromseleniumimportwebdriverfromselenium.webdriver.common. action_chainsimportActionChains# 生成浏览器对象browser = webdriver.Firefox()# 使浏览器访问 https://www.amazon.com/。browser.get('https://www.amazon.com/')# 找到亚马逊主页搜索框左边的亚马逊LOGO。logo = browser.find_element_by_xpath('/html/body/div[1]/header/div/div[1]/div[1]/div/a/span[1]')# 找到亚马逊搜索框Search_Bar = browser.find_element_by_xpath('//*[@id="twotabsearchtextbox"]')# 将亚马逊logo移动到搜索框action = ActionChains(browser) action.drag_and_drop (logo,Search_Bar).perform()

温馨提示:拖拽使用时注意加等待时间,有时会因为速度太快而失败。

——贴心的小编

4、截图:配合打码平台破解亚马逊验证码。

fromseleniumimportwebdriverfromselenium.webdriver.common.action_chainsimportActionChains# 生成浏览器对象browser = webdriver.Firefox()# 使浏览器访问 https://www.amazon.com/。browser.get('https://www.amazon.com/')# 获取当前浏览器titletitle = browser.title# 如果浏览器title 等于 “Robot Check”iftitle =='Robot Check':# 找到验证码图片elementcode_image_div = browser.find_element_     by_xpath('/html/body/div/div[1]/div[3]     /div/div/form/div[1]/div/div/div[1]/img')# 截取验证码图片,并以"code.png"命名保存。code_image_div.screenshot('code.png')# 对接打码平台 上传验证码图片。rc = RClient('username','password','105391','softid')     im1 =open('a.png','rb').read()print("正在识别验证码...")# 获取返回的验证码response = (rc.rk_create(im1,2060))     code = response['Result']print('验证码为:'+ code)# 找到验证码输入框并输入验证码browser.find_element_by_xpath    ('//*[@id="captchacharacters"]')     .send_keys(code)# 点击 确定 按钮。browser.find_element_by_xpath     ('/html/body/div/div[1]/div[3]     /div/div/form/div[2]/    div/span/span/button').click()

有了以上这些方法,我相信已经有一些同学想到用它们干什么了吧?方法有了,看你自己怎么使用它哦!

PART

03

简单一句就是Selenium可以完成大多数跟真人一样的操作。

你可以在写好程序后冲一杯咖啡,静静的看着它帮你完成点击、浏览的操作,就算出现验证码也阻挡不了它!

以上就是selenium鼠标键盘操作(ActionChains)的大部分功能以及破解亚马逊验证码的实现,有兴趣的读者朋友可以深入研究,将它利用到实际工作中。

以上就是本期的爬虫文章,谢谢阅读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值