常州网站推品牌宣传的推广
使用DrissionPage获取页面已加载图片的步骤如下:
- 解析DOM获取图片元素:
# 获取所有img标签元素
img_elements = page.eles('img')
- 提取并处理图片URL:
from urllib.parse import urljoin# 获取当前页面基础URL
base_url = page.url# 提取并转换图片地址
image_urls = []
for img in img_elements:src = img.attrs.get('src') # 获取src属性if src:# 处理相对路径转绝对路径absolute_url = urljoin(base_url, src)image_urls.append(absolute_url)
- 过滤无效地址(可选):
# 移除空值和无效协议地址
valid_urls = [url for url in image_urls if url and not url.startswith(('data:', 'javascript:'))]
- 完整示例代码:
from drission import DrissionPage
from urllib.parse import urljoin# 初始化DrissionPage(需提前配置driver)
page = DrissionPage()
page.get('https://example.com') # 访问目标页面# 获取并处理图片地址
image_urls = []
for img in page.eles('img'):src = img.attrs.get('src')if src:absolute_url = urljoin(page.url, src)if absolute_url.startswith(('http:', 'https:')):image_urls.append(absolute_url)print("找到图片地址:")
for idx, url in enumerate(image_urls, 1):print(f"{idx}. {url}")
关键点说明:
- ✅ 直接解析已加载的DOM,不会发起新请求
- ✅ 自动处理相对路径(如
/images/logo.png
转完整URL) - ✅ 过滤数据URI和JS伪协议地址
- ✅ 返回绝对URL可直接用于下载或分析
扩展应用:
- 获取图片尺寸:
img.attrs.get('width')
/img.attrs.get('height')
- 判断图片是否加载完成:
img.attrs.get('complete') == 'true'
- 获取懒加载图片:需等待
loading="lazy"
的图片实际加载后再提取
建议通过page.wait_load()
确保页面完全加载后再执行提取操作,以获取最完整的图片列表。