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

猜你喜欢

转载自www.cnblogs.com/dfy-blog/p/11577613.html
今日推荐