通过商品的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. 如何抓取淘宝天猫上多个宝贝商品图片视频素材

    今天小编要介绍的是,如何在淘宝天猫上挑选到喜欢的商品,并将所挑选到的商品图片及视频素材批量导到自己的电脑上保存?下面一起来看看小编的演示操作吧. 操作需要用的工具:载图助手 首先运行载图助手,进入首界 ...

  2. 抓取淘宝天猫商品详情图

    以下为淘宝商品详情图的抓取,商品规格.缩略图等的抓取网上都有,百度即可. 1.curl从淘宝/天猫详情页抓取全部信息(缩略图.规格.评价等,均可从结果中正则出来): 如:https://detail. ...

  3. 【爬虫】python使用selenium抓取淘宝中的商品数据

    前言 最近因为项目需要又得抓一批数据,和之前的scrapy不同,这次选择使用selenium来爬取.两种方法的区别如下: scrapy之类的库是基于网络请求来爬取的,也就是直接向目标服务器发送http ...

  4. 如何抓取淘宝上的商品信息和详情页信息

    来源于微擎里的人人商城里的插件, 采用接口: 第一个接口未获取基本信息接口,id为淘宝商品ID http://hws.m.taobao.com/cache/wdetail/5.0/?id=' .$id ...

  5. Java抓取淘宝/天猫商品详情

    https://segmentfault.com/a/1190000008313617

  6. 京东上货助手批量抓取淘宝商品步骤

    京东上传商品的不是很复杂,不过如果想要批量抓取其他平台商品到京东,京东商家就需要时间和精力来批量抓取商品上传了.一般在京东开店的商家,在淘宝.阿里等平台都会有店铺的,这个是电商商家的常态,很多商家都会 ...

  7. 京东上货助手怎么批量抓取淘宝商品?

    京东开店的商家,是如何把其他平台的商品一键复制到京东的呢?京东是个什么样的平台呢?相信很多商家都知道吧,京东有自己的物流,是中国的综合网络零售商,是中国电子商务领域受消费者欢迎和具有影响力的电子商务网 ...

  8. 采集淘宝API数据,抓取淘宝商品资料无需申请appkey

    为了进行淘宝的API开发,首先我们需要做下面几件事情. 1)开发者注册一个账号 2)然后为每个淘宝应用注册一个应用程序键(App Key) . 3)下载淘宝API的SDK并掌握基本的API基础知识和调 ...

  9. 抓取淘宝商品信息并制作商品信息比价表(以口红为例)

    快速抓取淘宝上口红信息 import requests import re import os def getHtmlText(url): try: r=requests.get(url,timeou ...

最新文章

  1. 人脸真伪验证与识别:ICCV2019论文解析
  2. sql update 日期减6个月_【干货】SQL基础快速入门
  3. urllib库添加headers的一般方法
  4. RHEL5.X 重启网卡出现./network-functions: line 78: .: ifcfg-eth0: file not found
  5. 你知道技术委员会吗?嗯,一个既重要却又鸡肋的神秘组织
  6. repo init和sync命令的实用小技巧
  7. 【机器学习】隐马尔可夫模型及其三个基本问题(三)模型参数学习算法及python实现
  8. The process cannot access the file '' because it is being used by another process.....
  9. html 静态网页如何在手机上访问,anywhere,http-server
  10. 爬虫爬取电影天堂电影链接
  11. mac 装java ecli_Eclipse下Maven安装和配置
  12. 微信800android1840,微信8.0版本官方版
  13. Windows10 邮箱批量导入联系人
  14. php是一种什么脚本语言
  15. BIOS设置通电开机?请问高手怎么设置?
  16. Go --- 使用各服务商的短信服务,实现短信验证等需求
  17. 电视大师服务器维护中,定期升级习惯好 天敏电视大师5最新固件
  18. 常用电平标准——LVTTL、LVCMOS、LVDS
  19. 253:丛林中的路——最小生成树Prim
  20. Echarts地图实现闪动气泡,或者加载本地图片,改变颜色和symbolSize大小效果

热门文章

  1. wzoi‘‘买苹果‘‘
  2. Oracle兵器谱上古神器之-KFED
  3. 浅谈四轴PID调试心得
  4. mac iPhone更换账号id:app store app更新的问题
  5. 什么是实人认证?需要用到哪些api接口
  6. 【UCIe】UCIe D2D Adapter 介绍
  7. Android 性能优化:使用 Lint 优化代码、去除多余资源
  8. RGB颜色值与十六进制颜色码
  9. 小程序毕业设计 基于微信会议室预约小程序毕业设计开题报告功能参考
  10. python 面向对象理解_怎么理解面向对象?