Skip to main content
 首页 » 编程设计

python之在 Python 中使用 Selenium Webdriver 下载图像

2024年09月07日74kerrycode

我正在尝试使用 Python 中的 Selenium Webdriver 从 URL 下载图像。该站点受登录页面保护,因此不能仅使用请求保存 URL 内容。登录后我可以从站点获取文本,但我不知道如何保存图像。

登录网站后,我可以执行 browser.save_screenshot(filename + '.png') 但该图像与原始图像大小不正确。

我现在的代码是这样的:

browser = webdriver.Chrome('../chromedriver') 
browser.get('www.example.com/login') 
# send username and password, click submit 
 
browser.get('www.example.com/123') 
html = browser.page_source 
printData(html) 
 
# this url is an image file 
browser.get('www.example.com/get_photo.php?id=123') 
browser.save_screenshot(filename + '.png') 

理想情况下,我想用类似的东西替换 save_screenshot()

with open(filename + '.jpeg', 'w') as img: 
    img.write(browser.download_current_image()) 

或者甚至是这样的,与弹出菜单交互

browser.right_click() 
browser.down_arrow_key() 
browser.return_key() 

或模拟按键

browser.command_key() 
browser.s_key() 

This问题给出了我想要的答案,但不适用于 Python。如果有办法在 Python 中执行该问题中建议的任何事情(除了截图),那将是一个很好的解决方案。

请您参考如下方法:

这是我使用 Selenium Webdriver 登录然后将 cookie 传递给保存图像的请求,从登录页面后面的 URL 下载图像:

headers = { 
"User-Agent": 
    "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36" 
} 
s = requests.session() 
s.headers.update(headers) 
 
for cookie in browser.get_cookies(): 
    c = {cookie['name']: cookie['value']} 
    s.cookies.update(c) 
 
r = s.get(imgurl, allow_redirects=True) 
open(filename + '.jpeg', 'wb').write(r.content) 

感谢AldoSuwandi在 this 中向我展示如何执行此操作邮政。我也用过 this帮助我了解如何使用请求下载图像的网站。