如何使用selenium实现自动抓取网页图片
背景
由于需要从网上爬取一些图片作为素材使用,本来计划的是用爬虫来做,但是由于目标网站有cloudflare
安全产品的保护,一直没有找到很好的解决办法,所以绕道采用了selenium
这个常用于做Web自动化测试的python
工具
目标
从某网站自动下载所有Messi的图片
准备工作
- 操作系统: MacOS
- 安装selenium
pip install selenium
- 安装chromedriver驱动
- 从官网下载 chrome驱动文件
- 将chromedriver可执行文件拷贝至目录
/usr/local/bin
核心步骤
- 创建浏览器实例,打开网页链接
- 通过
xpath
表达式找到Download
按钮的xpath
路径 - 调用
click
方法模拟点击按钮 - 在弹窗中使用同样的方法找到
Download full resolution image
按钮的xpath
路径 - 再次调用
click
方法模拟点击按钮 - 最后图片成功下次,继续下一张图片
完整代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from time import sleep
def main():
driver = webdriver.Chrome("/usr/local/bin/chromedriver")
driver.get("https://wallpaperaccess.com/wolf-iphone")
elements = driver.find_elements(By.XPATH, "/html/body/div[3]/div[3]/div[1]/div/div/div[2]/a")
for e in elements:
e.click()
download_button = WebDriverWait(driver, timeout=10).until(lambda d: driver.find_element(By.LINK_TEXT, "Download full resolution image"))
download_button.click()
sleep(3)
close_button = driver.find_element(By.XPATH, "/html/body/div[4]/div/div/div/div[1]/div/i")
close_button.click()
sleep(3)
Comments