输入关键字 抓取所有网页(京东商城关键字搜索商品的页面Url的参数为奇数(组图) )
优采云 发布时间: 2021-10-20 16:13输入关键字 抓取所有网页(京东商城关键字搜索商品的页面Url的参数为奇数(组图)
)
使用HttpClient可以创建浏览器对象,然后抓取页面数据,然后使用Jsoup库解析Html页面。因为Jsoup和JQuery通过selector获取元素的方式是一样的,所以抓取页面数据变得非常方便。
例如,此链接:%E5%B0%8F%E7%B1%B3&page=1&s=201&click=0
研究发现京东关键词搜索商品页面的page Url的page参数为奇数(1、3、5、7、9...),估计前30个产品数据其实是第一页,Ajax加载的后30个产品数据其实是第二页。第一页和第二页的数据合起来就是该页1页的数据。
另外,在京东商品的数据中,有两个字段很神奇,分别是spu和sku,spu代表商品集合的id,sku代表商品最小品类单元的id,意味着一个 spu 至少有一个或多个 sku 。每个 sku 代表一种商品。
例如这个链接:
现在可以爬取京东某关键词下的商品列表了。一个页面有60个产品,但是只能爬取30个,还有30个是通过ajax加载的,需要页面滚动。 Ajax请求是在第30条数据之后执行的,所以当前异步加载的30条商品数据是爬不出来的。如果要抓取完整的60条数据,可以使用Selenium库,在滚动页面中分析抓取网页数据,可以抓取Js动态生成数据。
使用 Fiddler 数据包捕获工具,有一些小的发现,如下所示。
这是一个简单的学习演示。基于SpringBoot+HttpClient+Jsoup框架,只能获取每个页面的前30条商品数据,后30条异步加载的商品数据暂时没有实现,仅供学习使用。
效果如下: