动态网页抓取(Ajax加载页面特点及优势分析-乐题库(一))

优采云 发布时间: 2021-11-18 05:16

  动态网页抓取(Ajax加载页面特点及优势分析-乐题库(一))

  动态网页数据抓取一、网页

  1.传统网页:

  如果需要更新内容,则需要重新加载网页。

  2.动态网页:

  使用AJAX,无需加载和更新整个网页即可实现部分内容更新。

  二、什么是AJAX?

  AJAX (Asynchronouse JavaScript And XML) 异步 JavaScript 和 XML。

  理解:通过后台与服务器的少量数据交换【一般是post请求】,Ajax可以让网页异步更新。这意味着可以在不重新加载整个网页的情况下更新网页的某些部分。

  例如:百度图片使用Ajax加载页面。

  

  Ajax加载页面特点:交互产生的数据不会出现在网页的源代码中,也就是说我们无法通过python发送请求直接获取这些新出现的数据,那么爬虫只能抓取没有Ajax交互产生的数据. 数据。假设一个网页是Ajax动态加载的,一共有十页,但是如果通过Python获取,一般只能获取一页,无法直接获取后面的九页数据。

  Ajax加载页面的原理:通过一定的接口【可以理解为一个URL】与服务器交换数据,从而在当前页面加载新的数据。

  Ajax加载页面的优点:

  1.反爬虫。对于一些初级爬虫工程师来说,如果不了解异步加载,总觉得代码没问题,但是拿不到自己想要的数据,所以怀疑自己的代码有问题,直到怀疑他们的生活。

  2. 更便捷的响应用户数据,优化用户体验。一个页面通常具有相同的内容。如果每次都重复加载一个页面,实际上是重复加载了完全相同的差异,浪费了响应时间。

  Ajax加载页面的缺点:

  破坏浏览器后退按钮的正常行为。例如,一个网页有十页。动态加载后,十个页面都加载在同一个页面上,但是你不可能回到第九个页面。因此,浏览器的后退按钮对于这种情况是无效的。NS。

  三、爬虫如何处理Ajax

  1.找一个接口

  既然Ajax是通过一个接口【特定的URL】与服务器交互的,那么我们只需要找到这个接口,然后模拟浏览器发送请求即可。

  技术难点:

  (1)可能有多个接口,一个网页可能有多个具体的数据交互接口,这就需要我们自己去尝试多次查找,增加了爬取的难度。

  (2)与服务器交互的数据加密比较困难**。与服务器交互时需要发送数据,但这部分数据是网站的开发者设置的。什么数据是浏览器发送的,虽然我们在大多数情况下都能找到,但是数据是经过加密的,获取起来比较困难。

  (3)需要爬虫工程师有较高的js功底。

  2.使用 selenium 模拟浏览器行为

  它相当于使用代码来操纵浏览器行为。浏览器能拿到什么数据,我们就能拿到什么数据。

  技术难点:

  代码量很大。

  3.两种方法的比较

  方式优缺点

  分析界面

  代码量小,性能高。

  有些网站接口比较复杂,尤其是一些被js混淆的接口,必须有一定的js基础。很容易被发现是爬虫。

  硒

  模拟浏览器的行为。浏览器可以请求的也可以用selenium来请求,爬虫更稳定。

  代码量大,性能低。

  四、总结:

  先分析界面。如果接口简单,那么使用接口来获取数据。如果界面复杂,那就用selenium来模拟浏览器的行为,获取数据。

  一切都有优点和缺点。一方面是快捷方便,另一方面难免会带来复杂性。因此,由您来权衡利弊或成本。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线