【问题标题】:Issue Webscraping Using Selenium使用 Selenium 进行网页抓取
【发布时间】:2019-04-06 22:19:48
【问题描述】:

我是 Python 新手 - 请提前感谢您的耐心等待。

我有一个客户评论网站,我想从评论者给供应商的 5 颗星中提取星数

在下面的示例中,审阅者给提供者 1 星(满分 5 星)。我希望能够从下面拉出“1”

<div class="rvw__hdr">   <div class="rvw__hdr-stat" itemtype="http://schema.org/Rating" itemscope="" itemprop="reviewRating">
    <meta itemprop="worstRating" content="1">   <img data-rating="1.0" src="//media.consumeraffairs.com/static/img/icons/stars/stars-1.a9f9f49815b7.svg" alt="Rated with 1 star" class="stars-rtg stars-rtg--sm">   <meta itemprop="ratingValue" content="1">   <meta itemprop="bestRating" content="5">   </div> </div>

我在这上面花了几个小时。 我最近的如下:

rating = driver.find_elements_by_xpath('//div[@class="rvw__hdr-stat"]')

num_page_items = len(rating)
for i in range(num_page_items):
    print (rating[i].text)

这会返回空虚 当我省略 .text 时,我会为页面上的 30 条评论中的每一条返回对象,其中之一如下:

<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="271fc297-c03f-42b2-a680-2b5dd5656227", element="e1066956-81f4-4203-a2ae-5d3cdd95789a")>

我不知道如何把它变成我想要的,评论者提供的实际评级数字

我尝试过 driver.find_elements_by_.... 的其他变体,但没有成功

提前感谢您的帮助。

【问题讨论】:

  • 缺少的代码是:
  • schema.org/Rating" itemscope="" itemprop="reviewRating">
  • 显然rating 中包含的元素没有文本。您可以分享您要抓取的页面吗?
  • 是的,这是网址:consumeraffairs.com/insurance/unum.html

标签: python selenium web-scraping


【解决方案1】:

综合评分可以从div标签的属性中获取

overall_rating = driver.find_element_by_css_selector("div.stars-rtg")
print(overall_rating.get_attribute("data-rating"))

要获取第一页的所有消费者评论评分,可以从img标签的属性中获取。

ratings = driver.find_elements_by_css_selector("img.stars-rtg")
ratings_value = [rating.get_attribute("data-rating") for rating in ratings]
print(ratings_value)

【讨论】:

  • 谢谢纳瓦拉苏!!这正是我想要的!
猜你喜欢
  • 2019-06-23
  • 2021-05-08
  • 2018-07-20
  • 2020-03-13
  • 2019-07-24
  • 1970-01-01
相关资源
最近更新 更多