如何使用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