Java爬虫Jsoup+httpclient获取动态生成的数据

发布时间 - 2026-01-11 01:04:40    点击率:

Java爬虫Jsoup+httpclient获取动态生成的数据

前面我们详细讲了一下Jsoup发现这玩意其实也就那样,只要是可以访问到的静态资源页面都可以直接用他来获取你所需要的数据,详情情跳转-Jsoup爬虫详解,但是很多时候网站为了防止数据被恶意爬取做了很多遮掩,比如说加密啊动态加载啊,这无形中给我们写的爬虫程序造成了很大的困扰,那么我们如何来突破这个梗获取我们急需的数据呢,

下面我们来详细讲解一下如何获取

String startPage="https://item.jd.com/11476104681.html";

Document document = Jsoup.connect(startPage).userAgent
("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/52.0.2743.116 Safari/537.36").get();

这时其实已经获取到了整个页面的数据,但是商品价格是通过回调函数获取后再填充上去的,所以这就要求我们写爬虫的开发者要很有耐心的去寻找价格数据的回调接口,我们直接访问这个接口就可以直接获取这个价格,下面是演示:

通过这张截图可以看到他传过来的只是一个静态资源页面根本没有价格参数,那么价格怎么来的呢,继续找发现这个接口:

你会发现在这个接口是很多参数拼接上去的,那么我们要做的就是分析是不是所有的参数都有用

https://p.3.cn/prices/mgets?callback=jQuery9734926&type=1&area=1&pdtk=
pduid=14930020970791835891856&pdpin=jd_6738608ee8eed&pdbp=0&skuIds=J_11476104681&source=item-pc

可以试着删除一些参数发现最终这个接口需要的参数其实很简单:

https://p.3.cn/prices/mgets?callback=jQuery9734926&type=1&area=1&skuIds=J_11476104681&source=item-pc

看到这里是不是很激动了,你其实可以换一些其他的JD商品ID一样能获取到当前价格和最高价格已经那什么价格我也不清楚,我们需要做的只是写一个Httpclient模拟请求这个接口

String doGet = HttpUtils.doGet("https://p.3.cn/prices/mgets?callback=jQuery9734926&type=1&area=1&skuIds=J_"+"11476104681"+"&source=item-pc", null);
System.out.println(doGet);

结果是这样:

jQuery9734926([{"id":"J_11476104681","p":"880.00","m":"980.00","op":"980.00"}]);

至于后面的你直接解析下JSON字符串那么你要的数据就GET到了。

注意一下

这是对回调请求到的数据进行的再请求获取,这只是对前面动态获取商品价格的一个补充,这种情况是价格本身通过主链接没有带到页面上而是加载过程中异步请求填充的,还有的时候是数据带过来了但是有相关的JS进行了相关处理我们还是获取不到,这个时候我们就得通过其他手段来获取这个数据,后面会讲解

将这些Jsoup和httpclient整合成一个爬虫模板完全可以完成你一些基本的爬取数据的操作,至于怎么整合就看个人喜好了。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java爬虫Jsoup+httpclient获取动态生成的数据  # Java爬虫  # Java爬虫Jsoup  # Java中使用开源库JSoup解析HTML文件实例  # java通过Jsoup爬取网页过程详解  # Java爬虫实现爬取京东上的手机搜索页面 HttpCliient+Jsoup  # Java 爬虫工具Jsoup详解  # Java实现爬虫给App提供数据(Jsoup 网络爬虫)  # Java如何导入Jsoup库做一个有趣的爬虫项目  # 回调  # 这是  # 加载  # 我也  # 来了  # 在这个  # 也就  # 你要  # 是这样  # 很有  # 其他的  # 给我们  # 不是很  # 不清楚  # 这就  # 这张  # 希望能  # 要做  # 可以看到  # 可以直接 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 5种Android数据存储方式汇总  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  nodejs redis 发布订阅机制封装实现方法及实例代码  如何在万网开始建站?分步指南解析  b2c电商网站制作流程,b2c水平综合的电商平台?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Mybatis 中的insertOrUpdate操作  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  微信小程序 五星评分(包括半颗星评分)实例代码  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  Laravel Fortify是什么,和Jetstream有什么关系  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何批量查询域名的建站时间记录?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  如何在阿里云服务器自主搭建网站?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  如何在建站宝盒中设置产品搜索功能?  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  JavaScript实现Fly Bird小游戏  Laravel如何集成Inertia.js与Vue/React?(安装配置)  北京的网站制作公司有哪些,哪个视频网站最好?  如何快速查询网站的真实建站时间?  如何快速使用云服务器搭建个人网站?  如何快速查询域名建站关键信息?  网易LOFTER官网链接 老福特网页版登录地址  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  Android使用GridView实现日历的简单功能  Laravel如何使用Livewire构建动态组件?(入门代码)  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  BootStrap整体框架之基础布局组件  Swift中switch语句区间和元组模式匹配  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  Laravel如何实现API资源集合?(Resource Collection教程)  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  长沙做网站要多少钱,长沙国安网络怎么样?  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Laravel如何为API生成Swagger或OpenAPI文档  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】