【问题标题】:Download an Image Using Selenium Webdriver in Python在 Python 中使用 Selenium Webdriver 下载图像
【发布时间】:2018-09-06 21:44:54
【问题描述】:

我正在尝试使用 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 question 给出了我想要的答案,但不适用于 Python。如果有办法在 Python 中执行该问题中建议的任何事情(除了截屏),那将是一个很好的解决方案。

【问题讨论】:

  • 站点受登录页面保护,所以不能只使用请求保存URL内容...为什么你认为requests不支持@ 987654322@?
  • 我之前也遇到过这种情况,我只是将webdriver会话复制到请求中,然后用它下载图像。如何传输它:stackoverflow.com/questions/32639014/… 当然,这取决于您正在处理的网站的安全/复杂程度
  • @AldoSuwandi 该链接正是我想要的。谢谢!我将发布我用作答案的代码。

标签: python selenium selenium-webdriver


【解决方案1】:

这是我用来从登录页面后面的 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)

感谢AldoSuwandithis 帖子中向我展示了如何执行此操作。我还使用了this 站点来帮助我弄清楚如何使用请求下载图像。

【讨论】:

  • 感谢这个效果很好,你甚至不需要硒
猜你喜欢
  • 1970-01-01
  • 2013-06-26
  • 2015-11-07
  • 2017-11-04
  • 2018-04-06
  • 1970-01-01
  • 2020-02-10
  • 2016-10-19
相关资源
最近更新 更多