我将python 3与硒一起使用,我必须下载图像
HTML:
<img id="labelImage" name="labelImage" border="0" width="672" height="456" alt="labelImage" src="/shipping/labelAction.handle?method=doGetLabelFromCache&isDecompressRequired=false&utype=null&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,则会显示以下消息: “很抱歉,我们目前无法处理您的请求。您似乎无权查看此网页”
答案 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')
如果获取元素的屏幕截图失败,您将获得整个页面之一-然后可以将其修剪到该元素。