網站
我用這種方法來切割元素
name = driver.find_elements(By.XPATH, '//div[@]/a/em/font[3]/font')
但是當我想要內部產品詳細資訊時,我必須移動到該專案頁面(單一產品頁面)
然后我只訪問該專案資料,但我想廢棄所有專案資料。它提供了一項資料,但我想要所有專案的資料。
產品的所有外部細節(我知道如何報廢)帶有箭頭。但是不知道如何廢棄圖2中顯示的所有專案的內部細節(下一個鏈接)
我想廢棄 xpath 紅色箭頭指示的這些細節
uj5u.com熱心網友回復:
要抓取產品的內部資料,您必須逐個單擊它們,然后它將在新選項卡中打開,因此您必須切換到新選項卡然后才能抓取它。
代碼:
driver.maximize_window()
wait = WebDriverWait(driver, 20)
driver.get("https://search.jd.com/Search?keyword=兩件套套裝裙&enc=utf-8&wq=兩件套套裝裙&pvid=c35452079d6240b3a5fab6c585b53856")
all_products = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//img[@data-img and not(@data-url) and @height='220']")))
print(len(all_products))
i= 1
for product in all_products:
prd = wait.until(EC.visibility_of_element_located((By.XPATH, f"(//img[@data-img and not(@data-url) and @height='220'])[{i}]")))
driver.execute_script("arguments[0].scrollIntoView(true);", prd)
prd.click()
all_handles = driver.window_handles
driver.switch_to.window(all_handles[1])
print(wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.sku-name"))).get_attribute('innerText'))
print(wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.p-price"))).text)
driver.close()
driver.switch_to.window(all_handles[0])
i = i 1
進口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
網站回應很慢,所以我無法運行整個執行。但是,上述代碼在您所在的地區應該可以正常作業。
此外,Stackoverflow 不允許我發布輸出,因為它包含一些特殊字符。請參閱輸出的評論。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/457783.html
上一篇:決議(抓取)網頁時如何將“display:flex”更改為“display:none”?|Python(電報機器人)|硒
