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

2021年9月20日 12点热度 0条评论 来源: 酱油灬控

前言

前段时间需要做一个获取天猫店铺中所有商品详情的程序,包括获取对应的商品的尺码、吊牌价、实时售价(促销价)、库存等信息。自己倒是写过一些爬虫,不过对于这类电商信息的爬取倒是第一次接触,听说天猫的反爬机制比较严,并且相关教程又都是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动态加载的。
所以工作就变成了找到请求的接口

    原文作者:酱油灬控
    原文地址: https://blog.csdn.net/h321041381/article/details/104482662
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。