如何使用Selenium通过指定XPath下载页面中的图片
解决方案
方案1:浏览器端直接下载(无需额外工具)
打开目标页面后按F12调出开发者工具,切换到「控制台」标签,执行以下代码即可直接提取图片并触发下载:
// 用你提供的XPath定位图片元素 const imgElement = document.evaluate('//*[@id="word-img"]/img', document).iterateNext(); if (imgElement) { const downloadLink = document.createElement('a'); downloadLink.href = imgElement.src; downloadLink.download = 'target-word-image.png'; downloadLink.click(); }
方案2:Python爬虫脚本下载
静态页面场景(页面源码可直接找到图片元素)
用requests + lxml实现:
import requests from lxml import etree # 替换为你实际的目标页面地址 TARGET_PAGE_URL = "替换为目标页面URL" REQUEST_HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } # 1. 请求目标页面 page_response = requests.get(TARGET_PAGE_URL, headers=REQUEST_HEADERS) page_html = etree.HTML(page_response.text) # 2. 用指定XPath提取图片元素 img_nodes = page_html.xpath('//*[@id="word-img"]/img') if img_nodes: img_src = img_nodes[0].get("src") # 3. 下载图片 img_response = requests.get(img_src, headers=REQUEST_HEADERS) with open("downloaded_word_image.png", "wb") as f: f.write(img_response.content) print("图片下载成功") else: print("未匹配到目标图片元素")
动态渲染页面场景(页面源码找不到图片元素)
用selenium模拟浏览器加载页面后再提取:
from selenium import webdriver from selenium.webdriver.common.by import By import requests REQUEST_HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } # 初始化浏览器,提前安装对应版本的ChromeDriver driver = webdriver.Chrome() try: # 打开目标页面 driver.get("替换为目标页面URL") # 定位图片元素 img_element = driver.find_element(By.XPATH, '//*[@id="word-img"]/img') img_src = img_element.get_attribute("src") # 下载图片 img_response = requests.get(img_src, headers=REQUEST_HEADERS) with open("downloaded_word_image.png", "wb") as f: f.write(img_response.content) print("图片下载成功") finally: driver.quit()
注意事项
你要下载的是反爬验证类的动态生成图片,每次请求的rand参数都会更新,不要直接复用当前拿到的图片地址,必须先从页面中实时提取最新的图片地址再发起下载请求,否则会拿到过期失效的图片。
内容的提问来源于stack exchange,提问作者user16334850
相关产品推荐
相关产品推荐

