PHP拆分亚马逊平均评分:仅保留数字评分的实现方法
解决亚马逊评分提取数字的问题
嘿,我来帮你搞定这个需求!你现在已经能拿到包含评分的内容了,只需要多一步处理就能把数字单独拆出来,这里给你两种靠谱的方法:
方法一:简单拆分法(适合新手)
这种方法利用空格分隔“4.5”和“étoiles”的特点,直接拆分取第一个元素:
<?php $url = 'https://www.amazon.fr/gp/customer-reviews/widgets/average-customer-review/popover/ref=dpx_acr_pop_?contextId=dpx&asin=B01N05ZMTK'; $content = file_get_contents($url); // 第一步拆分出包含评分的片段 $first_step = explode('<span class="a-size-base a-color-secondary">' , $content ); // 先检查是否成功拿到目标片段,避免报错 if(isset($first_step[1])){ // 按空格拆分评分文本,分离数字和"étoiles" $rating_parts = explode(' ', $first_step[1]); // 取拆分后的第一个元素,trim去掉可能的多余空格/换行 $rating_number = trim($rating_parts[0]); // 输出你要的数字评分 echo $rating_number; } else { // 如果没找到评分,输出默认提示 echo 'N/A'; } ?>
方法二:正则匹配法(更健壮)
如果亚马逊页面结构有小变化(比如空格变成其他分隔符),正则表达式能更稳定地提取数字:
<?php $url = 'https://www.amazon.fr/gp/customer-reviews/widgets/average-customer-review/popover/ref=dpx_acr_pop_?contextId=dpx&asin=B01N05ZMTK'; $content = file_get_contents($url); // 用正则匹配整数或小数形式的评分数字 if(preg_match('/<span class="a-size-base a-color-secondary">(\d+\.?\d*)/', $content, $matches)){ $rating_number = $matches[1]; echo $rating_number; } else { // 匹配失败时的兜底输出 echo 'N/A'; } ?>
小提醒
- 亚马逊可能会限制
file_get_contents的请求,建议你换成cURL并设置浏览器的User-Agent头,避免被反爬拦截; - 亚马逊的页面结构偶尔会更新,要是以后提取失效了,记得检查目标元素的class名有没有变化哦。
内容的提问来源于stack exchange,提问作者frontcodelover
相关产品推荐
相关产品推荐

