抓取淘宝天猫的商品的促销价格
通过商品的url获取促销价,天猫淘宝的促销价并不是直接生成的,而是通过js间接生成的。所以通过jsoup等工具无法抓取。
首先是尝试使用htmlUnit,因为其可以,模拟浏览器运行js、css。经试验,htmlunit确实可以运行js,尝试抓取我自己的网站,可成功获取ajax、js生成的内容。但在抓取淘宝网站时出现异常,htmlunit对网站内容的格式有一定的要求,于是只能想其他办法(以后再尝试此方法)。
接着使用httpwatch分析淘宝的请求,发现其中一个请求返回的值中有促销价的信息。
这个请求有2个关键点,关键1:参数itemid(就是商品的id)。关键2:是请求header的Referer。
具体代码如下:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;public class Test4Taobao {public static void main(String[] args) throws ClientProtocolException, IOException {HttpClient httpclient = new DefaultHttpClient();String url="http://detail.tmall.com/item.htm?spm=a230r.1.14.44.RoTYht&id=43508885384&ns=1&abbucket=20";String id=getStrByPrePost(url, "id=", "&");//根据url获取商品的idif(id!=null){//组装出获取商品信息的urlString detailUrl="http://mdskip.taobao.com/core/initItemDetail.htm?itemId="+id+"×tamp=1429065419751&tgTag=false&cartEnable=true&addressLevel=2&progressiveSupport=false&isUseInventoryCenter=false&household=false¬AllowOriginPrice=false&isRegionLevel=false&sellerUserTag=303632416&sellerUserTag2=18020085046181888&tmallBuySupport=true&isAreaSell=false&queryMemberRight=true&isIFC=false&sellerUserTag3=70368779862144&sellerUserTag4=8800522208643&service3C=true&tryBeforeBuy=false&isSecKill=false&isForbidBuyItem=false&sellerPreview=false&itemTags=843,1163,1478,1483,1547,1611,1803,1867,2049,2059,2443,2507,2635,3787,3974,4166,4555,4811,5323,21762,21826,25282,28802,29122,34178,56130,56194&isApparel=false&offlineShop=false&showShopProm=false&callback=setMdskip";HttpGet get = new HttpGet(detailUrl);get.addHeader("Referer", url);//Referer必须要设置HttpResponse response = httpclient.execute(get);String content = getContent(response);content=getStrByPrePost(content, "setMdskip(", ")");//返回的内容是json格式,可以通过gson等来解析,为了方便,此处直接截取。System.out.println("商品信息:"+content);String promotionPrice = getStrByPrePost(content, "promotionList", null);promotionPrice = getStrByPrePost(promotionPrice, "\"price\":", ",");System.out.println("商品价格:"+promotionPrice);}}/*** 获取返回内容的string* @param response* @return* @throws IllegalStateException* @throws IOException*/private static String getContent(HttpResponse response) throws IllegalStateException, IOException {java.io.InputStream is = response.getEntity().getContent();BufferedReader br = new BufferedReader(new InputStreamReader(is, "GBK"));//response.getEntity().getContentEncoding().getName()String line = "";String temp= null;while ((temp = br.readLine()) != null) {line+=temp;}return line;}/*** 根据前后的文本截取指定的内容。* @param str* @param pre* @param post* @return*/public static String getStrByPrePost(String str,String pre,String post){if(str!=null){if(pre!=null){int s = str.indexOf(pre);if(s>-1){str = str.substring(s+pre.length(), str.length());}else{return null;}}if(post!=null){int e = str.indexOf(post);if(e>-1){str = str.substring(0,e);}else{return null;}}}return str;}
}
第一篇博客
to be continued
抓取淘宝天猫的商品的促销价格相关推荐
- 如何抓取淘宝天猫上多个宝贝商品图片视频素材
今天小编要介绍的是,如何在淘宝天猫上挑选到喜欢的商品,并将所挑选到的商品图片及视频素材批量导到自己的电脑上保存?下面一起来看看小编的演示操作吧. 操作需要用的工具:载图助手 首先运行载图助手,进入首界 ...
- 抓取淘宝天猫商品详情图
以下为淘宝商品详情图的抓取,商品规格.缩略图等的抓取网上都有,百度即可. 1.curl从淘宝/天猫详情页抓取全部信息(缩略图.规格.评价等,均可从结果中正则出来): 如:https://detail. ...
- 【爬虫】python使用selenium抓取淘宝中的商品数据
前言 最近因为项目需要又得抓一批数据,和之前的scrapy不同,这次选择使用selenium来爬取.两种方法的区别如下: scrapy之类的库是基于网络请求来爬取的,也就是直接向目标服务器发送http ...
- 如何抓取淘宝上的商品信息和详情页信息
来源于微擎里的人人商城里的插件, 采用接口: 第一个接口未获取基本信息接口,id为淘宝商品ID http://hws.m.taobao.com/cache/wdetail/5.0/?id=' .$id ...
- Java抓取淘宝/天猫商品详情
https://segmentfault.com/a/1190000008313617
- 京东上货助手批量抓取淘宝商品步骤
京东上传商品的不是很复杂,不过如果想要批量抓取其他平台商品到京东,京东商家就需要时间和精力来批量抓取商品上传了.一般在京东开店的商家,在淘宝.阿里等平台都会有店铺的,这个是电商商家的常态,很多商家都会 ...
- 京东上货助手怎么批量抓取淘宝商品?
京东开店的商家,是如何把其他平台的商品一键复制到京东的呢?京东是个什么样的平台呢?相信很多商家都知道吧,京东有自己的物流,是中国的综合网络零售商,是中国电子商务领域受消费者欢迎和具有影响力的电子商务网 ...
- 采集淘宝API数据,抓取淘宝商品资料无需申请appkey
为了进行淘宝的API开发,首先我们需要做下面几件事情. 1)开发者注册一个账号 2)然后为每个淘宝应用注册一个应用程序键(App Key) . 3)下载淘宝API的SDK并掌握基本的API基础知识和调 ...
- 抓取淘宝商品信息并制作商品信息比价表(以口红为例)
快速抓取淘宝上口红信息 import requests import re import os def getHtmlText(url): try: r=requests.get(url,timeou ...
最新文章
- 人脸真伪验证与识别:ICCV2019论文解析
- sql update 日期减6个月_【干货】SQL基础快速入门
- urllib库添加headers的一般方法
- RHEL5.X 重启网卡出现./network-functions: line 78: .: ifcfg-eth0: file not found
- 你知道技术委员会吗?嗯,一个既重要却又鸡肋的神秘组织
- repo init和sync命令的实用小技巧
- 【机器学习】隐马尔可夫模型及其三个基本问题(三)模型参数学习算法及python实现
- The process cannot access the file '' because it is being used by another process.....
- html 静态网页如何在手机上访问,anywhere,http-server
- 爬虫爬取电影天堂电影链接
- mac 装java ecli_Eclipse下Maven安装和配置
- 微信800android1840,微信8.0版本官方版
- Windows10 邮箱批量导入联系人
- php是一种什么脚本语言
- BIOS设置通电开机?请问高手怎么设置?
- Go --- 使用各服务商的短信服务,实现短信验证等需求
- 电视大师服务器维护中,定期升级习惯好 天敏电视大师5最新固件
- 常用电平标准——LVTTL、LVCMOS、LVDS
- 253:丛林中的路——最小生成树Prim
- Echarts地图实现闪动气泡,或者加载本地图片,改变颜色和symbolSize大小效果