AJAX数据及提取的两种方式
什么是AJAX
AJAX(Asynchronouse JavaScript And XML)异步JavaScript和XML。过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用Ajax)如果需要更新内容,必须重载整个网页页面。因为传统的在传输数据格式方面,使用的是XML
语法。因此叫做AJAX
,其实现在数据交互基本上都是使用JSON
。使用AJAX加载的数据,即使使用了JS,将数据渲染到了浏览器中,在右键->查看网页源代码
还是不能看到通过ajax加载的数据,只能看到使用这个url加载的html代码。
获取ajax数据的方式
- 直接分析ajax调用的接口,然后通过代码请求这个接
这里我们直接观察审查元素(检查)中的内容来判断接口
这里我选取了一个动态网页的查看更多,直接点击
然后观察network选项卡的变化
这里可以看到网页在无刷新的状态下,通过查看更多加载了很多图片资源,其中第一个文件,查看一下它的Preview选项卡,可以看到这个文件是存储json的
然后通过Headers选项卡,我们可以看到它请求的URL,这里就需要我们自己去做简单分析,比如,通过这个链接,可以猜想p=3这个参数是否为新加载内容,而n这个参数为加载内容数目为20条
这样我们可以遵循链接的规则,去做一下简单的请求
既然数据被爬取下来了,我们就可以通过操作json的方法,去操作请求下来的数据,非常方便。
操作json文件参考 :https://blog.csdn.net/qq_41506882/article/details/104354521
-
使用Selenium+chromedriver模拟浏览器行为获取数据
Selenium相当于是一个机器人。可以模拟人类在浏览器上的一些行为,自动处理浏览器上的一些行为,比如点击,填充数据,删除cookie等。
方式 | 优点 | 缺点 |
---|---|---|
分析接口 | 用api接口请求数据,无需解析。代码量少,性能高 | 分析接口比较复杂,特别是一些通过js混淆的接口,要有一定的js功底。容易被发现是爬虫。 |
selenium | 直接模拟浏览器行为。浏览器能请求道的使用selenium也能请求到。爬虫更稳定。 | 代码量多。性能低 |
。