Python爬虫笔记【一】模拟用户访问之webdriver用户登入——第三次(8)
经过post方法之后,因为有动态的value值所以再此回到用webdriver的解决上,但是在下载图片上会打开新打开一个链接,导致与网页图片不同即验证码同步问题,没办法只能想了一个笨法子,网页截图,唉!因为只是验证码问题所以只上获取验证码的代码了,其他的在第六节都有把下载的代码换一下就行。
from PIL import Image from selenium import webdriver import time from selenium.webdriver.common.keys import Keys # 截全屏 def get_snap(driver): driver..maximize_window(); time.sleep(3) driver.get_screenshot_as_file('./full_snap.png') page_snap_obj = Image.open('full_snap.png') return page_snap_obj def get_image(driver): driver.find_element_by_id('frm_login').send_keys(Keys.DOWN) # 如果爬取的网页有iframe,则切换到xpath对应的iframe,没有的话,下面一行代码可以注释 driver.switch_to.frame(driver.find_element_by_id("frm_login")) driver.find_element_by_id("txt_sdertfgsadscxcadsads").click() # 这里是点击输入验证码框才会显示验证码 time.sleep(2) img = driver.find_element_by_id('imgCode') loca= img.location loca['x'] = 190 loca['y'] =190 print(loca) size = img.size # 这里根据自己爬取的网站进行调整,如果没有iframe的,不需要手工调整 left = loca['x'] + 10 top = loca['y'] + 107 right = left + size['width'] bottom = top + size['height'] page_snap_obj = get_snap(driver) page_snap_obj.show() image_obj = page_snap_obj.crop((left, top, right, bottom)) image_obj.show() # 得到的就是验证码 return image_obj if __name__ == "__main__": driver = webdriver.Firefox() url = "http:xxxxxxxxxxxxxxxxxxx" # 抓取验证码的网站 driver.get(url) get_image(driver)
当时在截全屏时因为iframe问题全屏的截取有些问题,在网上搜时,发现一个与我爬取网站id相同的老哥的代码,所以就借过来用了。
本文链接:https://blog.csdn.net/qq_34525938/article/details/88945788
————————————————
版权声明:本文为CSDN博主「wap2017」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34525938/article/details/88945788