我正在尝试使用 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 https://stackoverflow.com/questions/6813704/how-to-download-an-image-using-selenium-any-version问题给出了我想要的答案,但不适用于Python。如果有一种方法可以在 Python 中执行该问题中建议的任何操作(除了截图之外),那将是一个很好的解决方案。
以下是我用来从登录页面后面的 URL 下载图像的方法,方法是使用 Selenium Webdriver 登录,然后将 cookie 传递给保存图像的请求:
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)
谢谢阿尔多·苏万迪 https://stackoverflow.com/users/2335360/aldo-suwandi向我展示如何做到这一点this https://stackoverflow.com/questions/32639014/is-it-possible-to-transfer-a-session-between-selenium-webdriver-and-requests-s邮政。我也用过this https://www.codementor.io/aviaryan/downloading-files-from-urls-in-python-77q3bs0un网站帮助我弄清楚如何使用请求下载图像。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)