?原文链接 >>?selenium下载或保存图片最好的方法 |五十风的个人博客
selenium 爬取页面时经常遇到要保存图片的需求,通常的做法是获取链接后用?requests ?下载,但这种方法脱离了selenium环境,如遇到有校验的情况还需要绕过校验。
下面介绍两种直接通过selenium保存图片的方法:
1. 通过抓包
selenium-wire ?是selenium扩展,它可以对所有请求抓包,同时还可以修改请求头,请求body,请求返回值等,功能非常强大。
selenium-wire ?的使用和selenium一样,你只从seleniumwire导入webdriver就行,对于其他包还是从selenium导入
from selenium.webdriver.chrome.options import Options
from seleniumwire.webdriver import Chrome
driver = Chrome(options= Options())
下载图片有两种方法:
1-1.通过拦截器
通过拦截器预先把所有图片保存下来,要用到时在缓存目录中找
def get_img_path_from_url(url):
# 自行实现
return url
def response_interceptor(request, response):
t=response.headers['Content-Type']
if request.host=='xxx' and t and 'image' in t:
with open(get_img_path_from_url(request.url), 'wb') as f:
f.write(response.body)
driver.response_interceptor = response_interceptor
driver.get('...')
src=driver.find_element_by_tag_name('img').get_attribute('src')
img_path=get_img_path_from_url(src)
1-2. 请求后在所有请求中获取
? ?(全文请到原文查看...)? ?
完整文章见 >>?selenium下载或保存图片最好的方法 |五十风的个人博客?
|