【发布时间】:2021-03-08 04:25:35
【问题描述】:
我正在使用 Python 中的 Selenium 抓取评论页面。我想提取每条评论的评分(即从评论中的 7/10 中提取 7)。 HTML 元素的结构如下:
<div class ="review">
<div class="rating-bar">
<span class="user-rating">
<svg class="ipl-icon ipl-star-icon
"xmlns="http://www.w3.org/2000/svg" fill="#000000" height="24"
viewBox="0 0 24 24" width="24"> <path d="M0 0h24v24H0z"
fill="none"></path> <path d="M12 17.27L18.18 21l-1.64-7.03L22
9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z">
</path> <path d="M0 0h24v24H0z" fill="none"></path> </svg>
<span>7</span> # What I want to extract
<span class='scale'>/10</span>
</span>
</div>
该元素没有任何类名,所以我假设使用span标签下的类user-rating提取它:
rating = driver.find_elements_by_class_name('user-rating')
但是我应该如何在另一个 span 标签中提取 span 标签?我不能将它引用到任何类名。
另外,不是每条评论都包含评分,所以当它刮到没有评分的评论时,它会提示我错误:
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".rating-other-user-rating"} (Session info: chrome=87.0.4280.66)
这是我迄今为止尝试过的:
review = driver.find_elements_by_class_name("review")
rating_ls = []
for i in review:
rating = i.find_element_by_class_name('rating-other-user-rating').text
# If rating exists, append it to the list, otherwise append "N/A"
rating_ls.append(rating[0] if rating else "N/A")
如果有人可以帮助我解决这个问题,我将不胜感激。提前非常感谢!
【问题讨论】:
-
你能把整个
div和class=review一起发布吗? -
我已经修改了我的问题。谢谢!
-
介意分享网址吗?
标签: python html selenium web-scraping beautifulsoup