java爬虫抓取动态网页(Java爬虫Jsoup+httpclient获取动态生成的数据的相关内容)

优采云 发布时间: 2021-09-26 23:16

  java爬虫抓取动态网页(Java爬虫Jsoup+httpclient获取动态生成的数据的相关内容)

  想知道Java爬虫Jsoup+httpclient获取动态生成数据的相关内容吗?在本文中,我将讲解Java爬虫的相关知识和一些代码示例。欢迎阅读和纠正我们。我们先重点介绍一下:Java爬虫Jsoup+httpclient获取动态生成的数据,Java爬虫,Java爬虫Jsoup一起来学习吧。

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

  前面我们详细讲了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

  看到这里是不是很兴奋?你实际上可以更改一些其他的京东产品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做相关处理。我们仍然无法得到它。这时候我们就得通过其他方式来获取这些数据,后面会解释。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线