使用Selenium进行网络抓取

时间:2018-11-02 16:32:45

标签: python selenium web-scraping

我是Python的新手-请先感谢您的耐心等候。

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

在下面的示例中,审阅者给了提供者5分1星。我希望能够从下面拉出“ 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 _....的其他变体,但是没有运气

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

要获得总体评级,可以从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)