You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Selenium无法获取图片src属性的问题求助

解决Selenium获取Instagram图片src返回None的问题

核心问题与解决思路

  • 定位对象错误:_aagv是图片的外层容器div,并非img标签本身,直接获取这个容器的src自然返回None。需要先定位容器,再找到内部的img元素获取属性。
  • 等待逻辑不可靠:固定的time.sleep(3)无法保证页面元素完全加载,改用显式等待能更精准地等待元素就绪。
  • 未登录权限限制:Instagram对未登录用户的内容加载有约束,部分图片可能无法正常获取,登录后可解决此问题。

修正后的代码示例

基础修正(定位正确元素)

import selenium.webdriver as webdriver
import time
from selenium.webdriver.common.by import By

driver = webdriver.Firefox()
url = 'https://www.instagram.com/cats'
driver.get(url)

time.sleep(5)  # 适当延长等待时间,确保页面加载

# 先定位容器,再找内部的img标签
img_container = driver.find_element(By.CLASS_NAME, "_aagv")
img_src = img_container.find_element(By.TAG_NAME, "img").get_attribute("src")
print(img_src)

driver.quit()

优化版(使用显式等待)

import selenium.webdriver as webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
url = 'https://www.instagram.com/cats'
driver.get(url)

# 显式等待容器元素出现,超时时间10秒
img_container = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, "_aagv"))
)
img_src = img_container.find_element(By.TAG_NAME, "img").get_attribute("src")
print(img_src)

driver.quit()

遍历所有图片示例

import selenium.webdriver as webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
url = 'https://www.instagram.com/cats'
driver.get(url)

# 等待所有图片容器加载完成
img_containers = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CLASS_NAME, "_aagv"))
)

# 遍历每个容器获取图片src
for container in img_containers:
    img_src = container.find_element(By.TAG_NAME, "img").get_attribute("src")
    print(img_src)

driver.quit()

登录后访问(解决权限限制)

import selenium.webdriver as webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()

# 先登录Instagram
driver.get("https://www.instagram.com/accounts/login/")
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "username"))).send_keys("你的用户名")
driver.find_element(By.NAME, "password").send_keys("你的密码")
driver.find_element(By.XPATH, '//button[@type="submit"]').click()

# 跳过保存登录信息提示
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//div[text()="Not Now"]'))).click()

# 访问目标页面
driver.get("https://www.instagram.com/cats")

# 获取图片src
img_containers = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CLASS_NAME, "_aagv"))
)
for container in img_containers:
    img_src = container.find_element(By.TAG_NAME, "img").get_attribute("src")
    print(img_src)

driver.quit()

内容的提问来源于stack exchange,提问作者P_n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 08:35:21