为什么想起来做这个功能?是因为前段时间在做一个淘客网站的时候,想到是否能抓取到淘宝商品的买家秀呢?经过一番折腾发现,淘宝商品用户评价信息是通过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>";
}*/
?>

用PHP抓取淘宝商品的用户晒单评论+图片实例的更多相关文章

  1. Python爬虫学习==>第十二章:使用 Selenium 模拟浏览器抓取淘宝商品美食信息

    学习目的: selenium目前版本已经到了3代目,你想加薪,就跟面试官扯这个,你赢了,工资就到位了,加上一个脚本的应用,结局你懂的 正式步骤 需求背景:抓取淘宝美食 Step1:流程分析 搜索关键字 ...

  2. 3.使用Selenium模拟浏览器抓取淘宝商品美食信息

    # 使用selenium+phantomJS模拟浏览器爬取淘宝商品信息 # 思路: # 第一步:利用selenium驱动浏览器,搜索商品信息,得到商品列表 # 第二步:分析商品页数,驱动浏览器翻页,并 ...

  3. 16-使用Selenium模拟浏览器抓取淘宝商品美食信息

    淘宝由于含有很多请求参数和加密参数,如果直接分析ajax会非常繁琐,selenium自动化测试工具可以驱动浏览器自动完成一些操作,如模拟点击.输入.下拉等,这样我们只需要关心操作而不需要关心后台发生了 ...

  4. 使用Pyquery+selenium抓取淘宝商品信息

    配置文件,配置好数据库名称,表名称,要搜索的产品类目,要爬取的页数 MONGO_URL = 'localhost' MONGO_DB = 'taobao' MONGO_TABLE = 'phone' ...

  5. 使用Selenium模拟浏览器抓取淘宝商品美食信息

    代码: import re from selenium import webdriver from selenium.webdriver.common.by import By from seleni ...

  6. 爬虫实战--使用Selenium模拟浏览器抓取淘宝商品美食信息

    from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exce ...

  7. python3编写网络爬虫16-使用selenium 爬取淘宝商品信息

    一.使用selenium 模拟浏览器操作爬取淘宝商品信息 之前我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过A ...

  8. 使用selenium模拟浏览器抓取淘宝信息

    通过Selenium模拟浏览器抓取淘宝商品美食信息,并存储到MongoDB数据库中. from selenium import webdriver from selenium.common.excep ...

  9. 简单的抓取淘宝关键字信息、图片的Python爬虫|Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇)

    Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇) 淘宝改字段,Bugfix,查看https://github.com/hunterhug/taobaoscrapy.git 由于Gith ...

随机推荐

  1. 一种更清晰的Android架构(转)

    一种更清晰的Android架构   一种更清晰的Android架构 原文链接 : Architecting Android…The clean way? 译者 : Mr.Simple & So ...

  2. CSS伪类和伪元素

    一.伪类 CSS伪类用于向某些选择器添加特殊的效果,在W3规范中,CSS伪类有如下几个: CSS2.1 :active:向被激活的元素添加样式(激活是指点击鼠标那一下) :focus:向拥有键盘输入焦 ...

  3. python成长之路【第十五篇】:JavaScript初步认识

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.如何编写 1.J ...

  4. (十四)UDP协议的两个主要方法sendto和recvfrom详解

    在网络编程中,UDP运用非常广泛.很多网络协议是基于UDP来实现的,如SNMP等.大家常常用到的局域网文件传输软件飞鸽传书也是基于UDP实现的. 本篇文章跟大家分享linux下UDP的使用和实现,主要 ...

  5. react1

    1.方法用()  里面的每个参数之间用,分隔2.对象(函数.数组)用{} 3.{/*注释...*/} 4 组件的生命周期可分成三个状态:Mounting:已插入真实 DOMUpdating:正在被重新 ...

  6. mybatis-mysql操作存储过程

    java代码: @RequestMapping(value = "/testProcedure", method = RequestMethod.GET) public @Resp ...

  7. Pattern Recognition for Cell-free DNA - Github

    一直都没有找到生信领域简单易懂的机器学习案例,这回算是逮到一个了:机器学习识别cfDNA OpenGene/CfdnaPattern

  8. grunt不是内部或外部命令错误处理

    如题, npm install -g grunt-cli发现grunt命令却不可用, 其实是环境变量问题,但是网上很多给出的方法其实是不准确的, 正确方法,可以通过npm root -g查看路径,之后 ...

  9. oracle笔记

    一.sql*plus常用命令 (1)connect 用法:conn 用户名/密码@网络服务名[as sysdba/sysoper] 当特权用户连接时,必须带上as sysdba或是as sysoper ...

  10. 错误 java.lang.ClassCastException: com.ylpw.sms.YZZYSenderUtil cannot be cast to ResourceBundle

    出现错误: java.lang.ClassCastException: com.ylpw.sms.YZZYSenderUtil cannot be cast to ResourceBundle 百度搜 ...