我是 Selenium 的新手,正在嘗試從 thewhiskeyexchange.com 上的這些波旁威士忌產品卡中抓取資料(暫時只是名稱)。我已經在 scrapy shell 中測驗了我所有的 css(和 xpath)選擇器,所以我知道它們是正確的,但是輸出回傳有關“會話”和我不理解的元素的編碼資訊。串列中的專案數量似乎是正確的,所以也許 Selenium 正在做它應該做的事情,我只是不知道如何將輸出轉換為我應該使用的東西。如何僅從產品卡中獲取名稱?
我已經嘗試過 Selenium 提供的驅動程式和本地選擇器功能,結果相同。漂亮的湯函式回傳我需要的資料,但該方法對于我正在處理的專案范圍來說效率太低了。任何有關如何解決此問題的見解將不勝感激。
IN[]:
chrome_options = Options()
chrome_options.add_argument("--incognito")
chrome_options.add_argument("--window-size=1920x1080")
chrome_options.binary_location = "C:\Program Files\Google\Chrome\Application\chrome.exe"
IN[]:
driver = webdriver.Chrome(ChromeDriverManager().install())
IN[]:
url = "https://www.thewhiskyexchange.com/c/639/bourbon-whiskey"
driver.get(url)
time.sleep(5) # second delay to improve visual quality
html = driver.page_source
html # HTTP request response object is as expected
IN[]:
els = driver.find_elements_by_css_selector('p.product-card__name')
# local method: els = driver.find_elements(By.CSS_SELECTOR, 'p.product-card__name')
els
OUT[]:
[<selenium.webdriver.remote.webelement.WebElement (session="e521768d8df1dd788b1fda816299b0b5", element="b9384a19-f8c9-46b2-be99-780200dcba99")>,
<selenium.webdriver.remote.webelement.WebElement (session="e521768d8df1dd788b1fda816299b0b5", element="af76dfa8-b86c-426a-8ad8-30ea904ed11b")>,
<selenium.webdriver.remote.webelement.WebElement (session="e521768d8df1dd788b1fda816299b0b5", element="58b14e5a-6bc3-443a-807f-ec696e83b096")>, ...
uj5u.com熱心網友回復:
find_elements
回傳 Web 元素串列,而find_element回傳單個 Web 元素。
您可以遍歷串列并提取如下文本:
IN[]:
els = driver.find_elements(By.CSS_SELECTOR, 'p.product-card__name')
for e in els:
print(e.text)
另外,請注意,find_elements_by_css_selector在較新的 selenium 版本(也稱為Selenium 4)中已棄用,因此應該使用它find_elements(By.CSS_SELECTOR, "")。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/448291.html
標籤:Python 硒 硒网络驱动程序 网页抓取 硒铬驱动程序
上一篇:在另一個元素下搜索類元素
下一篇:單擊硒中的按鈕
