首页 > 编程语言 > 详细

Python爬虫笔记【一】模拟用户访问之webdriver用户登入——第三次(8)

时间:2019-09-24 13:44:13      阅读:76      评论:0      收藏:0      [点我收藏+]

经过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

Python爬虫笔记【一】模拟用户访问之webdriver用户登入——第三次(8)

原文:https://www.cnblogs.com/dfy-blog/p/11577613.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!