java爬虫爬取天猫指定店铺下全部商品详细信息(实时价格、尺码、库存等) 超详细(思路篇)!

前言

前段时间需要做一个获取天猫店铺中所有商品详情的程序,包括获取对应的商品的尺码、吊牌价、实时售价(促销价)、库存等信息。自己倒是写过一些爬虫,不过对于这类电商信息的爬取倒是第一次接触,听说天猫的反爬机制比较严,并且相关教程又都是python语言的居多,正好也做完了,所以想写个java的记录下来。方便大家交流学习。

  1. 使用工具:IDEA Chrome浏览器

本教程分为思路篇代码篇

爬取思路

1. 商品详情页url地址获取:获取该店铺下所有商品的详情页面的url
先进入到该店铺的所有商品分类界面
https://fayayd.tmall.com/search.htm?spm=a1z10.3-b-s.0.0.258f22f0M5d5Qk&search=y
在页面中我们可以看到每一页的商品显示最多只有60个
然后通过查看网页源码(页面右键查看或者Ctrl+u查看),发现在网页源码中并没有商品详情的url信息。
意识到这部分数据应该是ajax动态加载的。
店铺全部商品页面

所以我们打开控制台(F12),果不其然在控制台中找到了页面商品数据的信息。
商品详情信息数据部分
页面上的商品url信息链接为:
https://fayayd.tmall.com/i/asynSearch.htm?_ksTS=1582610331939_181&callback=jsonp182&mid=w-16343834760-0&wid=16343834760&path=/search.htm&search=y&spm=a1z10.3-b-s.0.0.3cc122f0dr4KXl

精简后为:https://fayayd.tmall.com/i/asynSearch.htm?_ksTS=1582610331939_181&callback=jsonp182&mid=w-16343834760-0&wid=16343834760

添加翻页:加入 &pageNo=页码 即可实现翻页
如:https://fayayd.tmall.com/i/asynSearch.htm?_ksTS=1582610331939_181&callback=jsonp182&mid=w-16343834760-0&wid=16343834760&pageNo=5

待会使用正则表达式获取页面上符合要求的商品链接即可。
获取商品链接的java正则表达式为:(写的不是很好,不过功能没问题):

(//detail\.tmall\.com/item\.htm\?id=[\d]{12}&rn=[a-z0-9]+&abbucket=10) //匹配商品链接正则表达式

通过该方式提取的商品链接我发现会有重复的,每个商品链接信息会重复三次,因为评论、图片、标题均含有商品链接信息所以提取出来会有三条相同链接。这个问题也好解决。
利用list中的元素创建HashSet集合,即可进行去重操作。

获取到的商品链接信息我先存储在txt中,共获取了2800+条商品详情链接信息:
在这里插入图片描述
有了商品详情链接信息就可以进行对商品详细信息(售价、、吊牌价、库存、尺码)等信息进行进一步提取了。

2. 商品详细信息提取思路,以及应对天猫反爬的思路和解决办法

目标提取图中的信息 吊牌价、当前售价(折扣价)、尺码-款式(货号)-库存
在这里插入图片描述
首先我们需要找到这些信息在哪。F12查看源码,果不其然 价格信息库存等都是ajax动态加载的。
所以工作就变成了找到请求的接口

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酱油灬控

你的打赏是我更新的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值