如何使用Selenium和Python计算星级?

2024-03-29 11:52:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正试图在这个特定的网站上刮取评论:https://shopee.sg/buyer/275295198/rating,但我无法找到一种使用selenium刮取明星评级的方法,因为每个明星都是一个独立的svg。意识到填充星和未填充星之间有一种模式:

这是我当前用于计算和求和填充星星的代码,但似乎只返回1:

    # Star rating
      star_ratings = product.find_elements_by_css_selector("[class='shopee-product-rating__rating']")
      stars = product.find_elements_by_css_selector("[class='shopee-svg-icon icon-rating-solid--active icon-rating-solid']")

      star_rate = 0
      for rating in star_ratings:
          #print(rating.get_attribute('svg'))
          if (product.find_elements_by_css_selector("[class='shopee-svg-icon icon-rating-solid--active icon-rating-solid']")) == stars:
              star_rates = star_rate + 1
              continue
      rating_csv.append(star_rates)
      print(star_rates)

Tags: svgbyelementsfindproductselectorcssclass
1条回答
网友
1楼 · 发布于 2024-03-29 11:52:41

您可以简单地使用starslen()来获取信息,而无需迭代结果和计数,如果它只覆盖活动的星号:

rating_csv.append(len(stars))

示例

from selenium import webdriver
import time

driver = webdriver.Chrome(executable_path=r'C:\Program Files\ChromeDriver\chromedriver.exe')
url = 'https://shopee.sg/buyer/208830993/rating'
driver.get(url)
time.sleep(5)

for rating in driver.find_elements_by_css_selector('.shopee-product-rating'):
    stars = rating.find_elements_by_css_selector('.icon-rating-solid')
    print(len(stars))
    
driver.close()

输出

4
5
5
5
5
5

相关问题 更多 >