查找星级

2024-09-30 22:11:42 发布

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

在这方面,我正在努力寻找一个星级

在刮壳中:

len(response.css('#info-panel .selected'))

len(response.css('#info-panel').xpath('//*[has-class("star selected")]'))

但一切都没有结果

html

<div class="search-item-info" doctordetail=".1.0.0.0.1.3"> <span doctordetail=".1.0.0.0.1.3.0"> <span class="star-rating" title="3.92" doctordetail=".1.0.0.0.1.3.0.0"> <span class="stars" doctordetail=".1.0.0.0.1.3.0.0.0"> <span class="star" doctordetail=".1.0.0.0.1.3.0.0.0.$5"></span> <span class="star selected" doctordetail=".1.0.0.0.1.3.0.0.0.$4"></span> <span class="star selected" doctordetail=".1.0.0.0.1.3.0.0.0.$3"></span> <span class="star selected" doctordetail=".1.0.0.0.1.3.0.0.0.$2"></span> <span class="star selected" doctordetail=".1.0.0.0.1.3.0.0.0.$1"></span></span> </span> <div class="star-rating-count" doctordetail=".1.0.0.0.1.3.0.1"> <span doctordetail=".1.0.0.0.1.3.0.1.0"> <span itemprop="ratingCount" doctordetail=".1.0.0.0.1.3.0.1.0.0">28</span></span> <span doctordetail=".1.0.0.0.1.3.0.1.1"> reviews</span></div> </span> </div>

Tags: divinfolenresponsecssxpathclassstar
2条回答

您可能会收到403错误(导致空响应),因为该网站使用Cloudfare保护。然后,您可能应该使用https://github.com/Anorov/cloudflare-scrape来绕过它

如果不是这样,您可以使用以下XPath表达式之一获得星级:

count(//h1/following::span[@class="stars"][1]//span[@class="star selected"])

产出:4

更准确地说:

substring-before(substring-after(//script[contains(@type,"json")],'"ratingValue": "'),'"')

产出:3.9

试试这个

response.css(".star-rating::attr(title)").get()

相关问题 更多 >