Scraping如何提取span标签data-content属性中的评分与评论数
核心逻辑:你需要的评分和评论数都存储在class为rating的span标签的data-content属性中,提取该属性后通过正则匹配或字符串拆分即可拿到目标值。
方法1:正则匹配(推荐,容错性更高)
import re # 原有获取flex的代码保持不变 for rating in flex.find_all("div", class_="article-seller-rating m-t-1"): # 提取data-content属性值 data_content = rating.find("span", class_="rating")["data-content"] # 匹配小数点格式的评分 score = re.search(r"(\d+\.\d+) out of 5 stars", data_content).group(1) # 匹配整数格式的评论数 review_num = re.search(r"Number of reviews: (\d+)", data_content).group(1) # 转换为数值类型按需使用 score = float(score) review_num = int(review_num) # 测试打印 print(score, review_num)
方法2:HTML解码后字符串拆分
如果不想用正则,也可以先解码属性里的转义HTML字符,再按<br>标签拆分取对应字段:
import html # 原有获取flex的代码保持不变 for rating in flex.find_all("div", class_="article-seller-rating m-t-1"): data_content = rating.find("span", class_="rating")["data-content"] # 解码转义的<br>标签 decoded = html.unescape(data_content) # 按<br>拆分内容 content_parts = decoded.split("<br>") # 取对应位置拆分取值 score = float(content_parts[2].split()[0]) review_num = int(content_parts[3].split(": ")[1]) # 测试打印 print(score, review_num)
内容的提问来源于stack exchange,提问作者Dan K
相关产品推荐
相关产品推荐

