Вы можете использовать BeautifulSoup
, чтобы сделать жизнь проще.
Я немного изменил ваш код, чтобы проиллюстрировать, как вы можете перемещаться по всем ссылкам на отдельные товары на странице.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
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
from bs4 import BeautifulSoup
#argument for incognito Chrome
option = Options()
option.add_argument("--incognito")
browser = webdriver.Chrome(options=option)
browser.get("https://www.daraz.com.bd/consumer-electronics/?spm=a2a0e.pdp.breadcrumb.1.4d20110bzkC0bn")
# Wait 20 seconds for page to load
timeout = 20
try:
WebDriverWait(browser, timeout).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='c16H9d']")))
except TimeoutException:
print("Timed out waiting for page to load")
browser.quit()
soup = BeautifulSoup(browser.page_source, "html.parser")
product_items = soup.find_all("div", attrs={"data-qa-locator": "product-item"})
for item in product_items:
item_url = f"https:{item.find('a')['href']}"
print(item_url)
browser.get(item_url)
item_soup = BeautifulSoup(browser.page_source, "html.parser")
# Use the item_soup to find details about the item from its url.
browser.quit()
Короче говоря, это именно то, что arundeep chohan упоминается в разделе комментариев. Вы можете создать новый экземпляр browser
, скажем browser1 = webdriver.Chrome()
, который может перемещаться по всем URL-адресам продукта.
Кроме того, я понял, что режим incognito
не работает в вашем сценарии. Вам необходимо определить chrome_options
и передать его в качестве аргумента методу webdriver.Chrome
.