我想制作一個爬蟲來從網站收集一些資訊。為此,我正在使用 Python 和 Selenium。問題是無法使用類名找到元素,但可以使用 XPATH 找到。我為此使用的代碼如下:
HTML:
<h1 class="txt-h4 clr-900 lf-2">
Xiaomi Redmi Note 11 Dual SIM 128GB And 6GB RAM Mobile Phone
</h1>
Selenium XPATH:(作業解決方案)
product_name = driver.find_element(By.XPATH, "/html/body/div[1]/div[1]/div[3]/div[3]/div[2]/div[2]/div[2]/div[1]/div/h1").text.strip()
Selenium 類名稱:(不作業的解決方案)
product_name = driver.find_element(By.CLASS_NAME, "txt-h4 clr-900 lf-2").text.strip()
我也使用 beautifulsoup4 嘗試了這種方法,但結果與類名相同:
product_name = page_soup.find("h1", {"class":['txt-h4 clr-900 lf-2']}).text.strip()
我使用此解決方案得到的錯誤是:
AttributeError: 'NoneType' object has no attribute 'text'
由于粒度,我需要做的是能夠按類名定位元素。
uj5u.com熱心網友回復:
您不能使用按類名搜索來執行此操作,因為此元素具有多個類,并且此方法將提供的字串與每個類進行比較。
這里唯一的解決方案是使用搜索:
xpath
driver.find_element(By.XPATH, "//*[@class='txt-h4 clr-900 lf-2']")
或 CSS 選擇器
driver.find_element(By.CSS_SELECTOR, ".txt-h4.clr-900.lf-2")
uj5u.com熱心網友回復:
你無法得到它,因為你列舉了多個類。
而不是這條線product_name = driver.find_element(By.CLASS_NAME, "txt-h4 clr-900 lf-2").text.strip()
,你應該使用這條線,而product_name = driver.find_element(By.CLASS_NAME, "txt-h4").text.strip()
不僅僅是"txt-h4 clr-900 lf-2""txt-h4"
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/515485.html
標籤:Python硒美丽的汤
