02.25 爬虫学习之案例开发获取搜索页面数据

准备一个定时任务

准备一个运行类

将之前封装的HttpClient拿过来,放到一个utils包中

编写定时类的定时方法

我们在京东中搜索手机,可以看到URL

点击下一页,观察URL的变化

其中page这个参数,我们发现

Page=1是第一页

Page=3是第二页

Page=5是第三页

这就是页码的判断参数

我们开始编写代码

写一个循环,循环页码(8示例数据,学习为主)

在开发者工具中查看下页面结构,下面这些就是页面中的商品

可以找到sku和spu

那我们来抓取这些数据

先准备一个HttpClient

搜索页面(这个地方循环的初始值变为1,之前写错了)

解析页面

创建一个解析方法,这个方法完成页面解析

基本思路是:首先获取spu,然后根据spu获取sku

分析页面先获取这个div,id是goodsList,然后根据这个div找到子元素ul,然后找到li

所以获取代码

获取spu

获取sku

分析页面,找到ps-item

所以代码

其中sku的值

所以代码

然后我们将数据保存到数据库中

根据sku查询商品数据,如果存在,后续数据就不用查询解析了

设置完商品spu,继续解析商品详情url

之前我们发现这个是由sku拼接成的

代码,完成拼接

继续获取商品的图片,这个地方注意,在开发者工具和源代码中看到的不一样,所以代码要经常调试,开发者中是src而源码中是data-lazy-img,我们使用data-lazy-img

代码

其中因为图片大小的问题,需要做一个替换

这个图片很小

改成1就可以了

所以代码替换下,最后保存图片

获取商品的价格

因为价格选中不同的价格不同

我们调出开发者工具看一下,发现有新的请求

所以要重新请求,我们看一下

访问下,可以得到数据

简化下Url

代码实现,获取到Json数据

解析Json

解析数据

获取商品标题,先进入详情页获取标题

代码

这是获取完页面了,接下来分析里面的内容

所以代码

设置创建和更新时间

终于可以保存了

之前忘了补充事务注解了

调用方法

调试下程序,看是否有错误的地方

发现总是访问不到,显示页面信息

所以设置请求头消息User-Agent模拟浏览器

httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0");

写错地方

可以获取数据了