当前位置: 首页 > news >正文

用PHP抓取淘宝商品的用户晒单评论+图片实例

为什么想起来做这个功能?是因为前段时间在做一个淘客网站的时候,想到是否能抓取到淘宝商品的买家秀呢?经过一番折腾发现,淘宝商品用户评价信息是通过Ajax来调取的,通过嗅探网址发现,评论数据的请求接口是:

https://rate.tmall.com/list_detail_rate.htm?itemId=524394294771&spuId=341564036&sellerId=100414600&order=3&currentPage=1&append=0&content=1&tagId=&posi=&picture=1&callback=jsonp2339

其实上面很多参数也很容易理解,itemId是商品的ID,currentPage是当前页,picture为1时显示有图的评价,既然是抓取买家秀,那么picture参数一定要为1了。

如果你直接去访问上面的接口时,会得到如下图所示的请求结果:

看到请求结果是jsonp格式我就蛋碎了,我不知道如何去解析,但是换种思路,直接用PHP的正则去解析也未尝不可嘛,通过尝试,已经正确的能够解析到评论内容和买家秀的图片内容,如图:

效果不错,代码实现了评论内容的抓取、买家秀图片的抓取,代码奉上:

复制代码
<?php
$url = "https://rate.tmall.com/list_detail_rate.htm?itemId=524394294771&spuId=341564036&sellerId=100414600&order=3&currentPage=1&append=0&content=1&tagId=&posi=&picture=1&callback=jsonp2339";
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $url);
curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, TRUE);
$texts = curl_exec($ch2);
curl_close($ch2);
//echo $texts;
$pattern = '/"pics"(.+?)","reply"/is';
preg_match_all($pattern, $texts, $match);
for($i=0;$i<count($match[0]);$i++){
    $pattern2 = '/"rateContent":"(.+?)."reply"/is';
    preg_match($pattern2, $match[0][$i], $matchcomments_only);
    echo "<p>".str_replace('","rateDate":"',' ',str_replace('","reply"','',str_replace('"rateContent":"','',$matchcomments_only[0])))."</p>";

    $pattern3 = '/img.alicdn(.+?).jpg/is';
    preg_match($pattern3, $match[0][$i], $matchpic_only);
    echo '<img src="http://'.$matchpic_only[0].'" width=120>';
}

/*匹配一张图片
$pattern = '/"pics"(.+?)","position"/is';
preg_match_all($pattern, $texts, $matchpic);
for($i=0;$i<count($matchpic[0]);$i++){
    $pattern3 = '/img.alicdn(.+?).jpg/is';
    preg_match($pattern3, $matchpic[0][$i], $matchpic_only);
    echo "<p>".$matchpic_only[0]."</p>";
}*/

/*匹配所有图片
$pattern = '/"pics"(.+?)","position"/is';
preg_match_all($pattern, $texts, $matchpic);
for($i=0;$i<count($matchpic[0]);$i++){
    $pics_str=str_replace('"pics":["//','',str_replace('"],"picsSmall":"","position"','',$matchpic[0][$i]));
    $arr = explode('","//',$pics_str);
    echo "<p>";
    foreach($arr as $newstr){
        echo '<img src=http://'.$newstr.' width=100 >';
    }
    echo "</p>";
}*/
?>
复制代码

转载于:https://www.cnblogs.com/lcl666518/p/5387901.html

相关文章:

  • c语言小练习(蛮好玩的)
  • Android上传头像代码,相机,相册,裁剪
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • Memcached 安装及启动脚本
  • kafka 源码调研系列1 特色
  • 小型数据库
  • JQuery在线手册
  • UNIX环境高级编程——线程和信号
  • 忘记mysql数据库root密码
  • SqlServer快捷键整理
  • 分析cocos2d-x中的CrystalCraze示例游戏
  • ios开发之导航控制器的原理
  • Windows下安装使用curl命令
  • paip.数据库发邮件通知配置
  • 20145328 《Java程序设计》实验二实验报告
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Debian下无root权限使用Python访问Oracle
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Javascript 原型链
  • Nacos系列:Nacos的Java SDK使用
  • php面试题 汇集2
  • ubuntu 下nginx安装 并支持https协议
  • 成为一名优秀的Developer的书单
  • 构建工具 - 收藏集 - 掘金
  • 排序算法之--选择排序
  • 前端js -- this指向总结。
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 异步
  • ​2021半年盘点,不想你错过的重磅新书
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #每日一题合集#牛客JZ23-JZ33
  • ( 10 )MySQL中的外键
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (转)mysql使用Navicat 导出和导入数据库
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET/C# 使用反射注册事件
  • ?
  • @EventListener注解使用说明
  • @RestController注解的使用
  • @基于大模型的旅游路线推荐方案
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)
  • [C++]18:set和map的使用
  • [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现
  • [docker] Docker的数据卷、数据卷容器,容器互联
  • [GN] 后端接口已经写好 初次布局前端需要的操作(例)
  • [GXYCTF2019]禁止套娃
  • [HeadFrist-HTMLCSS学习笔记][第一章Web语言:开始了解HTML]
  • [hibernate]基本值类型映射之日期类型
  • [Latex] Riemann 问题中的激波,接触间断,膨胀波的 Tikz 绘图
  • [Linux] Apache的配置与运用
  • [office] excel中weekday函数的使用方法 #学习方法#微信#媒体
  • [one_demo_6]逆置整数