爬取异步请求(XHR/JS)数据方法

概述

之前在做爬虫的时候,比如在爬取到https://www.1688.com/?spm=a261p.8650866.0.0.2dfa36c3tjLrCQ网页的时候,发现很多内容明明在浏览器看得见,但是请求下来的内容却没有,于是打开F12查看Network发现,如下: 从这里我们就可以清楚的在xhr返回的header里面看到异步请求的url,这里我们直接访问该url(或者在preview里面可以看到返回的数据)可以看到返回的数据就是需要数据,也就是我们要爬的数据。接下来就是进行url格式分析,一般都会有规律可循。

问题窥探

其实会出现看得见,摸不着的情况下是因为网页的数据是异步加载的,所以在http抓到的网页是不包含在里面的。网页有些数据呈现是采非同步方式,会是在背景去送httprequest取得,再用ajax或其他把数据回填到网页上,这部分可以在F12的这里找找看可能会有数据,取不到数据有可能是他网页有作多次来回运算,才会呈现最终画面,可以从F12的Status Code看有没有redirect相关(ex 307)。

解决办法

如果单纯用console httprequest比较难(可能背后网页依赖浏览器的东西很多) 可以考虑用driver开启网页,并用Selenium套件操控driver。会省了很多破解时间。

详细方法见:

用C#+Selenium+ChromeDriver 爬取网页,完美模拟真实的用户浏览行为

 

1. 异步请求 异步请求是指应用程序在向服务器请求数据的同时,不会暂停应用程序的执行。相反,它会继续执行其它任务。这样,用户可以继续与应用程序交互,而不必等待请求完成。 2. XMLHttpRequest (XHR) XHR 是一种 API,可用于通过 JavaScript 进行 HTTP 请求和响应。XHR 支持异步请求和传输数据的各种方法,可以通过它来读取远程文件或提交到服务器上的表单数据,从而更新网页内容,而不必重新加载整个页面。 3. AJAX AJAX 是一种使用 XHR 实现的术语,指异步 JavaScript 和 XML。它可以在不刷新整个页面的情况下,通过与服务器交互来更新部分页面内容。AJAX 可以用于创建动态和交互性更强的网站。 4. Axios Axios 是一个基于 Promise 的 HTTP 加载库,用于浏览器和 Node.js。它支持异步操作,并可以在浏览器和服务器间发送 HTTP 请求和接收响应。Axios 还支持请求和响应拦截,以及用于处理错误的插件。 5. Fetch Fetch 是一种现代的接口,用于从服务器获取资源。它使用 Promise,提供了更简洁的 API 和更可靠的错误处理。Fetch API 在原生 JavaScript 中可用,并且不需要像 XHR 一样进行实例化。Fetch API 可以在浏览器和服务器上使用。 综上所述,XHR 和 AJAX 是比较基础的异步请求方式,而 Axios 和 Fetch 更加优秀和高效。Axios 可以说是在 XHR 之上的一种封装,提供了更加简洁和易用的 API。而 Fetch 则是一种更加现代的方式,比较适合在原生 JavaScript 中使用。不同的异步请求方式,在不同的场景和需求下,有着各自的优缺点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值