python - 如何使用Selenium和Python从链接中提取动态图像?

标签 python selenium-webdriver

我正在尝试从链接下载图像。既然是动态渲染图片,那么如何下载图片呢?

现在我尝试获取图像 URL,但这是渲染图像,我可以获取第一个链接。

这是代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

executable_path = "/usr/bin/chromedriver"
chrome_options = Options()
os.environ["webdriver.chrome.driver"] = executable_path
driver = webdriver.Chrome(executable_path=executable_path, chrome_options=chrome_options)
driver.get("https://www.macfarlanepartners.com/projects/park-fifth-mid-rise/")
driver.maximize_window()
print "Entered"
elements = driver.find_elements_by_xpath("""/html/body/div/div/div[3]/div[1]/div[1]""")
time.sleep(5)
for i in  elements:
    image = i.find_element_by_tag_name("img")
    img_src = image.get_attribute("src")
    print img_src

driver.close()

输出

我只得到第一个图像链接:

https://www.macfarlanepartners.com/wp-content/uploads/2016/08/Park-Fifth-Mid-Rise-Large-Photo-1-480x240.jpg

还有没有办法自动找到src和img标签来下载图片,而不是根据不同的网站搜索xpath?

最佳答案

您只能检索第一个链接作为 find_elements_by_xpath("""/html/body/div/div/div[3]/div[1]/div[1]""")定位策略仅返回一个元素,这就是 for() 的原因循环仅迭代一次以提取 src 的值第一个 <img> 的属性标签。

更好的解决方案是包含 <img>标签 xpath如下:

elements = driver.find_elements_by_xpath("""/html/body/div/div/div[3]/div[1]/div[1]/img""")
for i in  elements:
    img_src = i.get_attribute("src")
    print img_src

您将能够检索 3 个链接,如下所示:

https://www.macfarlanepartners.com/wp-content/uploads/2016/08/Park-Fifth-Mid-Rise-Large-Photo-1-480x240.jpg
https://www.macfarlanepartners.com/wp-content/uploads/2016/08/Park-Fifth-Mid-Rise-Large-Photo-2-480x240.jpg
https://www.macfarlanepartners.com/wp-content/uploads/2016/08/Park-Fifth-Mid-Rise-Large-Photo-3-1-480x240.jpg

关于python - 如何使用Selenium和Python从链接中提取动态图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49283265/

相关文章:

python - 带有 staticdir 的 Google App Engine 中的 403 错误

python - 更改默认浏览器 linux - Python

python - 了解统计模型线性回归

selenium - 如何使用 Selenium WebDriver 获取鼠标悬停时的工具提示文本

java - Selenium 基本程序运行时启动 GC

python - 检查 Django 中多对多子对象是否共享父对象

python - 如何在遵循 pylint 规则的同时格式化长字符串?

java - Poi api XSSFWorkbook 表类型转换异常

java - download.default_directory selenium java 无法在 84 chrome 驱动程序中工作

node.js - 带有 geckodriver 的 Firefox 无法在 Ubuntu 服务器上启动