不带扩展名的Python +硒下载图片

时间:2019-01-18 13:04:04

标签: python image selenium

我将python 3与硒一起使用,我必须下载图像

HTML:

<img id="labelImage" name="labelImage" border="0" width="672" height="456" alt="labelImage" src="/shipping/labelAction.handle?method=doGetLabelFromCache&amp;isDecompressRequired=false&amp;utype=null&amp;cacheKey=774242409034SHIPPING_L">

Python代码:

found = browser.find_element_by_css_selector('img[alt="labelImage"]') 
src = found.get_attribute('src')
urllib.request.urlretrieve(src, 'image.png')

该图像文件为空,如果我尝试将扩展名切换为html,则会显示以下消息: “很抱歉,我们目前无法处理您的请求。您似乎无权查看此网页”

1 个答案:

答案 0 :(得分:0)

您尝试下载时收到的错误是由于urllib调用是其服务器的全新会话-它没有浏览器具有的cookie和身份验证。例如。就像您在浏览器中打开隐身模式,然后在地址栏中粘贴src属性一样-对于服务器,您是新客户端,尚未填写表单,未登录等。

您可能想尝试其他方法-在selenium /浏览器会话中,仅截取<img>元素的屏幕截图。该操作取得了一定的成功,例如Chrome仅在最近才添加了对该功能的支持,在某些情况下失败了:

found = browser.find_element_by_css_selector('img[alt="labelImage"]')
try:
    found.screenshot('element.png')
except Exception as ex:  # FIXME: anti-pattern - I don't recall the exact exception - when you run the code, change it to the proper one
    print('The correct exception is {}'.format(ex))
    browser.get_screenshot_as_file('page.png')

如果获取元素的屏幕截图失败,您将获得整个页面之一-然后可以将其修剪到该元素。