我正在學習網頁抓取并試圖獲取位于此頁面底部的銷售頁面總數(“https://www.farfetch.com/uk/shopping/women/sale/all/items.aspx”),但我正在努力這樣做。
準確地說,我正在嘗試獲取元素內的文本: <div data-testid="page-number">1 of 532</div>
我試過使用 BeautifulSoup:
Pages = pageSoup.find("div", {"data-testid" : "page-number"}).text但沒有運氣。
然后我嘗試使用 Selenium,但我也很難找到這個類。我試過使用,driver.find_element(By.XPATH(''))但也沒有運氣。
如果這些是愚蠢的問題,我深表歉意,但我對網路抓取還很陌生。
uj5u.com熱心網友回復:
能夠通過以下代碼提取文本。
需要向下滾動到頁面末尾以提取詳細資訊。
可能會也可能不會點擊Accept Cookies按鈕繼續。
# Imports required for Explicit wait.
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver.get("https://www.farfetch.com/uk/shopping/women/sale/all/items.aspx")
wait = WebDriverWait(driver,30)
# Click on Accept cookies
wait.until(EC.element_to_be_clickable((By.XPATH,"//button[contains(text(),'Accept All')]"))).click()
# Scroll down to the footer
driver.execute_script("window.scrollBy(0,document.body.scrollHeight)")
driver.execute_script("window.scrollBy(0,-1000);")
page_num = wait.until(EC.presence_of_element_located((By.XPATH,"//div[@data-testid='page-number']")))
print(page_num.text)
1 of 532
uj5u.com熱心網友回復:
因此,如果您page_source是正確的,您可以通過以下方式實作目標css selector:
soup.select_one('div[data-testid="page-number"]').text
例子
from bs4 import BeautifulSoup
html='''<div data-testid="page-number">1 of 532</div>'''
soup = BeautifulSoup(html, 'lxml')
soup.select_one('div[data-testid="page-number"]').text
uj5u.com熱心網友回復:
一種理想的方法是繼續滾動,直到找到帶有文本的元素作為1 of 532誘導WebDriverWait for thevisibility_of_element_located()并且您可以使用以下任一定位器策略:
使用xpath:
driver.get("https://www.farfetch.com/uk/shopping/women/sale/all/items.aspx") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[data-testid='Button_PrivacySettingsBanner_AcceptAll']"))).click() while True: try: driver.execute_script("window.scrollBy(0,1500)") print(WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div[data-testid='page-number']"))).text) break except TimeoutException: continue驅動程式退出()
控制臺輸出:
1 of 532
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/361664.html
上一篇:抓取附加鏈接并將其附加到串列中
