ajax抓取网页内容(照Web发展的趋势和发展趋势分析(一))

优采云 发布时间: 2021-10-10 03:11

  ajax抓取网页内容(照Web发展的趋势和发展趋势分析(一))

  有时我们使用requests抓取页面时,得到的结果可能与浏览器中看到的不同:在浏览器中可以看到正常显示的页面数据,但是使用requests获取的结果却看不到。这是因为获取的请求都是原创的 HTML 文档,浏览器中的页面是数据经过 JavaScript 处理后生成的结果。这些数据有很多来源,可以通过 Ajax 加载或收录在 HTML 中。文档中的文档也可能是通过JavaScript和特定算法计算后生成的。

  在第一种情况下,数据加载是一种异步加载方法。原创页面最初不会收录一些数据。原创页面加载完成后,会向服务器请求一个接口来获取数据,然后对数据进行处理和呈现。在页面上,这实际上是一个 Ajax 请求。

  根据Web发展的趋势,这种形式的页面越来越多。页面的原创HTML文档不收录任何数据,数据通过ajax统一加载后呈现,从而在Web开发中实现前后端分离,避免服务器直接渲染页面带来的压力被减少。

  因此,如果遇到这样的页面,可以直接使用requests等库来抓取原创页面。无法获得有效数据。这时候就需要从页面后台分析发送到界面的Ajax请求。如果可以使用requests来模拟ajax请求,那么就可以成功爬取。

  什么是阿贾克斯

  Ajax,全称Asynchronous JavaScript and XML,即异步JavaScript和XML。它不是一种编程语言,而是一种使用 JavaScript 与服务器交换数据并更新部分网页的技术,同时保证页面不会被刷新,页面链接不会发生变化。

  对于传统的网页,如果要更新其内容,name 必须刷新整个页面,但使用 Ajax,您可以在不完全刷新页面的情况下更新其内容。在这个过程中,页面实际上是在后台与服务器进行交互。获取到数据后,通过JavaScript来改变页面,从而更新页面的内容。

  基本的

  在对Ajax有了初步的了解之后,我们再来了解一下它的基本原理。向网页更新发送ajax请求的过程可以简单分为以下3个步骤:

  (1)发送请求;

  (2)分析内容;

  (3) 渲染网页。

  Ajax 分析方法查看请求

  Ajax 实际上有其特殊的请求类型,称为 xhr。如下所示:

  

  右侧可以观察到Request Headers、URL、Response Headers等信息。Request Headers中的信息之一是X-Requested-With:XMLHttpRequest,将请求标记为Ajax请求,如图:

  

  因此,我们看到的微博页面的真实数据并不是从原页面返回的,而是在执行JavaScript之后再次向后台发送Ajax请求,浏览器获取数据再进一步渲染。

  过滤请求

  接下来,使用 Chrome 开发者工具的过滤功能过滤掉所有的 Ajax 请求。请求上方有一个过滤器栏。直接点击XHR。此时,下面显示的所有请求都是 Ajax 请求。

  

  接下来连续滑动页面,可以看到页面底部有新的微博,开发者工具发出的Ajax请求也一一出现,方便我们捕获所有的Ajax请求。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线