我使用python selenium抓取chrome中的图片,为了下载图片,我使用下面的代码创建了下载链接:
script_js = 'var imageURL = document.getElementsByTagName("{select_tag}")[{num}].getAttribute("src");' \
'var link = document.createElement("a"); ' \
'link.download = "{image_name}";' \
'link.href = imageURL;' \
'link.innerHTML = "download";' \
'document.body.appendChild(link);' \
'link.click();' \
'document.body.removeChild(link);' \
'delete link;'.format(select_tag="img", num=0, image_name=f"{order+1}.jpg")
browser.execute_script(script_js)
我以前在其他网站上用这种方法成功下载过图片。但是这次,它不起作用。
当我创建下载链接并单击它时,浏览器在当前选项卡中打开图像,而不是下载它。
我试着获取页面中单个图像的url,并在新标签页中打开它,然后,我用同样的方法创建了下载链接,发现它起作用了。
我很好奇为什么不能在原始页面下载。既然这些图片需要登录才能查看,这是一种防刮擦方法吗?
有没有办法创建一个下载链接,下载成功,在原来的网页?
我很抱歉,我不能提供原来的网站,因为它需要登录。
哦,我忘了提到图像的src属性看起来像这样:“img/a175/321 F2061 A9895..."。所以,我认为图像是从同一个起源服务的。
1条答案
按热度按时间e4yzc0pl1#
如果你能看到它,你可以直接下载它,或者通过图片本身的截图下载它。你可以使用SeleniumBase(Python框架)来完成它。
pip install seleniumbase
,然后用python
或pytest
运行下面的脚本。第一个测试直接从网站下载图片,第二个测试只截取图片的小屏幕截图,然后保存。
这是它的当前输出:(如果这些网站发生变化,下载的图像也可能发生变化。)