Я пытаюсь получить все частичные скриншоты для каждой статьи с этого сайта .Мне удается найти элемент с элементом ниже.
<div id="post-4474417" class="post-box " data-permalink="https://hypebeast.com/2019/1/ten-best-sneakers-paris-fashion-week-fall-winter-2019-runway-shows" data-title="The 10 Best Sneakers From Paris Fashion Week's FW19 Runways">
Однако, когда я пытаюсь переименовать скриншоты, используя element.text
, я просто получаю то же имя, извлеченное из самого последнего элемента на сайте. Однако когда явывод с print(item)
, он дает мне все различные названия.Что я тут не так делаю?
Выход print(item)
:
- 10 лучших кроссовок с FW19 Runways Paris Fashion Week
- sacai Дебюты НовыйКроссовки Nike во время FW19 Paris Runway Show
- Причудливая коллекция Sacai SS19 включает в себя Nike Collaboration
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from PIL import Image
from io import BytesIO
import os
import time
from random import randint
from time import sleep
import requests
from bs4 import BeautifulSoup as bs
driver = webdriver.Chrome('/Users/Documents/python/Selenium/bin/chromedriver')
driver.get('https://hypebeast.com/search?s=nike+sacai+fashion')
time.sleep(1)
products = [element for element in WebDriverWait(driver, 30).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='post-box ']")))]
element_item = [element.text for element in WebDriverWait(driver, 30).until(EC.visibility_of_all_elements_located((By.XPATH, "//h2/span")))]
for item in element_item:
print(item)
i = 1
for product in products:
location = product.location_once_scrolled_into_view
size = product.size
png = driver.get_screenshot_as_png()
im = Image.open(BytesIO(png))
left = location['x']
top = location['y']
right = location['x'] + size['width']
bottom = location['y'] + size['height']
im = im.crop((left, top, right, bottom)).save(str(i)+"_"+item+".png")
i=i+1
if not product :
pass
sleep(randint(1,2))
driver.quit()