Web scraping 无法使用bs4刮取数据

Web scraping 无法使用bs4刮取数据,web-scraping,beautifulsoup,tripadvisor,Web Scraping,Beautifulsoup,Tripadvisor,我试图从Trip Advisor酒店中获取“价值”数据的星级评级,但无法使用类名获取数据: 以下是我尝试使用的代码: review_pages=requests.get("https://www.tripadvisor.com/Hotel_Review-g60745-d94367-Reviews-Harborside_Inn-Boston_Massachusetts.html") soup3=BeautifulSoup(review_pages.text,'html.parser')

我试图从Trip Advisor酒店中获取“价值”数据的星级评级,但无法使用类名获取数据: 以下是我尝试使用的代码:

review_pages=requests.get("https://www.tripadvisor.com/Hotel_Review-g60745-d94367-Reviews-Harborside_Inn-Boston_Massachusetts.html")  
soup3=BeautifulSoup(review_pages.text,'html.parser')   
value=soup3.find_all(class_='hotels-review-list-parts-AdditionalRatings__bubbleRating--2WcwT')    
Value_1=soup3.find_all(class_="hotels-review-list-parts-AdditionalRatings__ratings--3MtoD")

当我试图捕获值时,它返回一个空列表。任何方向都会很有帮助。我尝试了该页面中的多个类名,但我得到了各种字段,如数据,查看ect,但我无法获得仅服务的气泡评级。

您可以使用attribute=value选择器,并使用^starts with运算符将类及其值作为子字符串传递进来,以允许形成属性值一部分的不同星形值

或者,更简单地使用
span
类型选择器为子跨度进行选择

.hotels-hotel-review-about-with-photos-Reviews__subratings--3DGjN span
在这方面:

values=soup3.select('.hotels-hotel-review-about-with-photos-Reviews__subratings--3DGjN [class^="ui_bubble_rating bubble_"]')    
从左向右读取时,选择器的第一部分是为这些评级的父类进行选择。下面的空格是一个子组合符,它结合了下面的属性=值选择器,该选择器收集符合条件的子项列表。如前所述,您可以仅使用span来替换它

代码:

虽然我使用re,但我认为这是过度使用,您可以简单地使用replace

import requests
from bs4 import BeautifulSoup
import re

review_pages=requests.get("https://www.tripadvisor.com/Hotel_Review-g60745-d94367-Reviews-Harborside_Inn-Boston_Massachusetts.html")  
soup3=BeautifulSoup(review_pages.content,'lxml')   
values=soup3.select('.hotels-hotel-review-about-with-photos-Reviews__subratings--3DGjN [class^="ui_bubble_rating bubble_"]')    #.hotels-hotel-review-about-with-photos-Reviews__subratings--3DGjN span
Value_1 = values[-1]
print(Value_1['class'][1])
stars = re.search(r'\d', Value_1['class'][1]).group(0)
print(stars)