php如何爬取天猫和淘宝商品数据

这篇文章主要介绍了php如何爬取天猫和淘宝商品数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、思路

最近做了一个网站用到了从网址爬取天猫和淘宝的商品信息,首先看了下手机端的网页发现用的react,不太了解没法搞,所以就考虑从PC入口爬取数据,但是当爬取URL获取数据时并没有获取价格,库存等的信息,仔细研究了下发现是异步请求了另一个接口,但是接口要使用refer才能获取数据,于是就通过以下方式写了一个简单的爬虫,用于爬取商品预览图和商品的第一个分类的价格、库存等。

二、实现

代码如下:

function crawlUrl($url){
import('PhpQuery.Curl');$curl=new \Curl();$result = $curl->read($url);$content = mb_convert_encoding( $result['content'], 'UTF-8', 'UTF-8,GBK,GB2312,BIG5' );$myres=array();if(strrpos($url,'taobao.com')!=false) {//匹配是否下架if(strpos($content,'此宝贝已下架')!==false){return false;}preg_match("|itemId   : '(.*)'|isU", $content, $match);$item_id=$match[1];preg_match("|sellerId   : '(.*)'|isU", $content, $match);$sellet_id=$match[1];preg_match("|<title>(.*)</title>|isU",$content,$match);$title=$match[1];//价格库存信息$ch = curl_init();curl_setopt ($ch, CURLOPT_URL, '/tupian/20230522/sib.htm$opt[CURLOPT_HEADER]=false;$opt[CURLOPT_CONNECTTIMEOUT]=15;$opt[CURLOPT_TIMEOUT]=300;$opt[CURLOPT_AUTOREFERER]=true;$opt[CURLOPT_USERAGENT]='Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11';curl_setopt_array($ch,$opt);curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ch,CURLOPT_REFERER,$url);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);$out_put=curl_exec ($ch);curl_close ($ch);$res=str_replace('onSibRequestSuccess(',"",$out_put);$res=rtrim($res,');1');$result=json_decode($res,true);//查询出图片信息preg_match('|<ul id="J_UlThumb" class="tb-thumb tb-clearfix">(.*)</ul>|isU', $content, $match);preg_match_all('/<img data-src="(.*?)" \//', $match[1], $images);$myres['title']=str_replace('-淘宝网','',$title);$myres['price']=current($result['data']['originalPrice']);$myres['act_price']=current($result['data']['promotion']['promoData']);$myres['stock']=$result['data']['dynStock']['stock'];$myres['banners']=$images[1];}else{//匹配是否下架if(strpos($content,'此宝贝已下架')!==false){return false;}$start=strpos($url,'&id=');$item_id=substr($url,$start+4,12);if(!is_numeric($item_id)){$start=strpos($url,'?id=');$end=strpos($url,'&spm');$item_id=substr($url,$start+4,$end-$start-4);}preg_match("|<title>(.*)</title>|isU",$content,$match);$title=$match[1];$myurl='/tupian/20230522/initItemDetail.htm//价格库存信息$ch = curl_init();curl_setopt ($ch, CURLOPT_URL, $myurl);$opt[CURLOPT_HEADER]=false;$opt[CURLOPT_CONNECTTIMEOUT]=15;$opt[CURLOPT_TIMEOUT]=300;$opt[CURLOPT_AUTOREFERER]=true;$opt[CURLOPT_USERAGENT]='Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11';curl_setopt_array($ch,$opt);curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ch,CURLOPT_REFERER,$url);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);$out_put=curl_exec ($ch);curl_close ($ch);$res = mb_convert_encoding( $out_put, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5' );$res=str_replace('setMdskip',"",$res);$res=str_replace('(',"",$res);$res=str_replace(')',"",$res);$result=json_decode($res,true);$nowk="";$nowstore="";foreach($result['defaultModel']['inventoryDO']['skuQuantity'] as $k=>$val){$nowk=$k;$nowstore=$val;break;}$myres['title']=str_replace('-tmall.com天猫','',$title);$myres['price']=$result['defaultModel']['itemPriceResultDO']['priceInfo'][$nowk]['price'];$myres['act_price']=isset($result['defaultModel']['itemPriceResultDO']['priceInfo'][$nowk]['suggestivePromotionList'])?$result['defaultModel']['itemPriceResultDO']['priceInfo'][$nowk]['suggestivePromotionList']:$result['defaultModel']['itemPriceResultDO']['priceInfo'][$nowk];$myres['stock']=$result['defaultModel']['inventoryDO']['totalQuantity']?$result['defaultModel']['inventoryDO']['totalQuantity']:$nowstore['quantity'];//查询出图片信息preg_match('|<ul id="J_UlThumb" class="tb-thumb tm-clear">(.*)</ul>|isU',$content, $match);preg_match_all('/<img src="(.*?)" \//',$match[1],$images);$myres['banners']=$images[1];}return $myres;
}

上述代码用到phpquery的库,但是其实没啥用,直接用Curl就行,具体爬取的数据可以穿参查看结果,方法不区分淘宝和天猫链接,但是前提是必须是PC端链接,另外正则写的不规范,所以可以自己重写正则来匹配数据。

封装后的接口名称:item_get 

响应字段表-试用API数据

名称类型必须示例值描述

item

item[]1宝贝详情数据

num_iid

Bigint1520813250866宝贝ID

title

String1三刃木折叠刀过安检创意迷你钥匙扣钥匙刀军刀随身多功能小刀包邮宝贝标题

desc_short

String0商品简介

promotion_price

Int0优惠价

price

Float125.8价格

total_price

Float00

suggestive_price

Float00

orginal_price

String025.80原价

nick

String0欢乐购客栈掌柜昵称

num

Int03836库存

min_num

Int00最小购买数

detail_url

String0http://item.taobao.com/item.htm?id=520813250866宝贝链接

pic_url

String1//gd2.alicdn.com/imgextra/i4/2596264565/TB2p30elFXXXXXQXpXXXXXXXXXX_!!2596264565.jpg宝贝图片

brand

String0三刃木品牌名称

brandId

Int08879363品牌ID

rootCatId

Int050013886顶级分类ID

cid

Int150014822

crumbs

Mix0[]导航菜单

created_time

String0

modified_time

String0

delist_time

String0

desc

String0商品详情

desc_img

Mix0[]商品详情图片

item_imgs

Mix0item_imgs[]商品图片

item_weight

String0

item_size

String0

location

String0发货地

express_fee

Float00.00快递费用

ems_fee

Float0EMS费用

post_fee

Float0物流费用

shipping_to

String0发货至

has_discount

Boolean0false是否有优惠

video

video[]0商品视频

is_virtual

String0

is_promotion

Boolean0false是否促销

props_name

String01627207:1347647754:颜色分类:长方形带开瓶器+送工具刀卡+链子;1627207:1347647753:颜色分类:椭圆形带开瓶器+送工具刀卡+链子;商品属性名。格式为pid1:vid1:name1:value1;pid1:vid2:name2:value2。

prop_imgs

prop_imgs[]0商品属性图片列表

property_alias

String020509:9974422:36;1627207:28326:红色;20509:9975710:38;1627207:28326:红色;20509:9981357:40;1627207:28326:红色销售属性值别名。格式为pid1:vid1:alias1;pid1:vid2:alia2。

props

Mix0[{ "name": "产地","value": "中国" }]商品属性

total_sold

Int0

skus

skus[]0商品规格信息列表

seller_id

Int02844096782卖家ID

sales

Int0138销量

shop_id

Int0151372205店铺ID

props_list

Mix0{20509:9974422: 尺码:36}商品属性

seller_info

seller_info[]1卖家信息

tmall

Boolean0false是否天猫

error

String0错误信息

warning

String0警告信息

url_log

Mix0[]

favcount

Int00

fanscount

Int00

method

String0item_tmall:pget_item

promo_type

String0

props_img

Mix01627207:28326": "//img.alicdn.com/imgextra/i2/2844096782/O1CN01VrjpXt1zyCc9DvERE_!!2844096782.jpg属性图片

shop_item

Mix0[]

relate_items

Mix0[]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/30306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

row_number()分页返回结果顺序不确定

之前通过row_number()实现分页查询时&#xff1a; select top [PageSize] * from (select row_number() over (order by id desc) as RowNum,*from table ) as A where RowNum > (PageIndex - 1) * PageSize发现查询出来的结果顺序是不确定的&#xff0c;查询官方文档&am…

基于遗传算法改进的支持向量机多分类仿真,基于GA-SVM的多分类预测,支持相机的详细原理

目录 背影 支持向量机SVM的详细原理 SVM的定义 SVM理论 遗传算法的原理及步骤 SVM应用实例,基于遗传算法优化SVM的多分类预测 完整代码包括SVM工具箱:https://download.csdn.net/download/abc991835105/88175549 代码 结果分析 展望 背影 多分类预测对现代智能化社会拥有重…

VGG16模型详解

VGG16模型详解 0、VGG16介绍 VGG16是一种深度卷积神经网络&#xff0c;由牛津大学的研究团队于2014年开发。 VGG16在2014年的ImageNet Large Scale Visual Recognition Challenge (ILSVRC) 竞赛中取得了显著的成绩。它在图像分类任务中获得了当年的第二名&#xff0c;其准确…

matplotlib 笔记 plt.grid

用于添加网格线 主要参数 visible 布尔值&#xff0c;True表示画网格 which表示要显示的刻度线类型&#xff0c;可以是 major&#xff08;主刻度&#xff09;或 minor&#xff08;次刻度&#xff09;&#xff0c;或者同时显示&#xff08;both&#xff09;alpha 透明度 …

音视频--视频数据传输

参考文献 H264码流RTP封装方式详解&#xff1a;https://blog.csdn.net/water1209/article/details/126019272H264视频传输、编解码----RTP协议对H264数据帧拆包、打包、解包过程&#xff1a; https://blog.csdn.net/wujian946110509/article/details/79129338H264之NALU解析&a…

【Redis】初学Redis

目录 使用Redisyum安装redis启动redis操作redis设置远程连接 Redis路线Redis 使用Redis yum安装redis 使用命令&#xff0c;直接将Redis安装到linux服务器&#xff1a; yum -y install redis启动redis redis-server /etc/redis.conf &操作redis redis-cli设置远程连接…

Shopee虾皮买家号注册时需要注意什么问题

虾皮是一家在线购物平台&#xff0c;如果您打算在虾皮上注册一个买家账号&#xff0c;以下是一些需要注意的问题&#xff1a; 账号安全&#xff1a;确保您选择一个安全的密码&#xff0c;并定期更改密码&#xff0c;以保护您的账号免受未经授权的访问。 个人信息&#xff1a;…

网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(四)对战模块

网页版Java&#xff08;Spring/Spring Boot/Spring MVC&#xff09;五子棋项目&#xff08;四&#xff09;对战模块 一、约定前后端交互接口1. 建立连接接口2. 针对落子的请求和响应 二、实现前端页面三、实现后端1. 当用户进入房间&#xff0c;更新用户状态 OnlineUserManager…

Linux mysql5.7开启 binlog

查看 mysql是否开启 binlog。 查看命令&#xff1a; show variables like %log_bin%; log_bin OFF 是关闭的状态。 编辑my.cnf配置文件 vim /etc/my.cnf 默认的配置文件内容&#xff1a; 增加下面内容 server_id 1 binlog_format ROW log-bin mysql_log_bin 重启mysq…

Chromium内核浏览器编译记(三)116版本内核UI定制

转载请注明出处&#xff1a;https://blog.csdn.net/kong_gu_you_lan/article/details/132180843?spm1001.2014.3001.5501 本文出自 容华谢后的博客 往期回顾&#xff1a; Chromium内核浏览器编译记&#xff08;一&#xff09;踩坑实录 Chromium内核浏览器编译记&#xff08;…

木马免杀(篇一)基础知识学习

木马免杀&#xff08;篇一&#xff09;基础知识学习 ———— 简单的木马就是一个 exe 文件&#xff0c;比如今年hw流传的一张图&#xff1a;某可疑 exe 文件正在加载。当然木马还可能伪造成各式各样的文件&#xff0c;dll动态链接库文件、lnk快捷方式文件等&#xff0c;也可能…

MySQL单表查询

单表查询 素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varch…

Spring MVC项目概述及创建

Spring MVC项目概述及创建 1.什么是Spring MVC Spring MVC是基于SevletAPI的原始Web框架。Spring MVC项目也叫做SpringWeb项目。 它是在springboot项目中引入了web框架&#xff0c;原本的spring项目不具备网络通信能力&#xff0c;而spring mvc允许http响应&#xff0c;当用…

无刷电机控制

无刷电机控制 特点: 线圈不动&#xff0c;磁极转动电子换向方式消除了有刷电机的缺点单位质量/功率转矩大驱动较复杂

群狼调研(靠谱市场调查公司):住宅物业满意度详细指标设计

群狼调研(长沙靠谱市场调查公司)受顾客委托开展住宅物业满意度调研&#xff0c;设计住宅物业满意度调研的详细指标需要考虑多个方面&#xff0c;包括物业服务质量、环境质量、安全与安保、社区活动与设施、居民沟通与投诉处理、费用管理与透明度等。以下是一些常见的详细指标设…

徐雷,太委屈

文 | 螳螂观察 作者 | 仲夏 自3月8日上线以来&#xff0c;京东百亿补贴已整整5个月。相比首月投入10个亿&#xff0c;京东百亿补贴如今的存在显得尴尬与鸡肋。 眼看百亿补贴难以肩负发力下沉市场、扛起低价策略的重任&#xff0c;京东近期又将“京喜拼拼”更名“京东拼拼”卷…

putty上传下载文件笔记

首先声明一点&#xff0c;putty是不支持上传下载的&#xff0c;但是可以变通实现。 通过cmd命令行实现 安装putty后&#xff0c;cmd可以使用pscp命令来上传下载。 1.本地上传至服务器 语法&#xff1a; pscp 盘名:\文件路径\文件名 用户名ip地址:路径 示例&#xff1a; ps…

FFmpeg 编码详细流程

介绍 FFmpeg的 libavcodec 模块完成音视频多媒体的编解码模块。FFmpeg 本身不具有音视频编码的功能和底层能力&#xff0c;只是对各类第三方的编码器API 进行封装调用。老版本的 FFmpeg 将avcodec_encode_video2()作为视频的解码函数 API&#xff0c;将avcodec_encode_audio2(…

(学习笔记-进程管理)进程间有哪些通信方式?

每个进程的用户地址空间都是独立的&#xff0c;一般而言是不能互相访问的&#xff0c;但内核空间时每个进程都共享的&#xff0c;所以进程之间要通信必须通过内核 管道 在Linux命令中 [ | ] 这个竖线就是一个管道。 $ ps auxf | grep mysql 它的功能是讲前一个命令&#xf…

如何使用 AT+WEBSERVER 指令实现自定义的 Webserver html 网页配网

开启 AT 固件中的 Webserver 指令和 FS 指令支持 乐鑫官网发布的默认通用 AT 固件不支持 webserver 配网功能&#xff0c; 需要用户自己搭建 esp-at 环境&#xff0c;并在 sdkconfig 中开启 webserver AT 指令 和 FS 指令的支持&#xff0c; 如下图所示&#xff1a; 测试 AT 固…