我想做一个爬虫收集一些信息从一个网站。为此,我使用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'由于粒度的原因,我需要做的是能够通过类名定位元素。
发布于 2022-10-14 06:55:27
不能使用“按类名进行搜索”,因为该元素有多个类,此方法将提供的字符串与每个类进行比较。
这里唯一的解决方案是使用以下方法进行搜索:
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")发布于 2022-10-14 06:57:44
您无法获得它,因为您枚举多个类。
而不是这一行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://stackoverflow.com/questions/74065329
复制相似问题