动态网页数据抓取

动态网页数据抓取

一、网页

1.传统网页:

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

2.动态网页:

使用AJAX则不需要加载更新整个网页,实现部分内容更新。

二、什么是AJAX?

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

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

比如:百度图片采用的就是Ajax方式加载页面。

Ajax加载页面特点:通过交互产生的数据不会在网页源码中出现,这就表明了我们无法通过python发送请求直接获得这些新出现的数据,那么此时爬虫只能爬取没有通过Ajax交互所产生的数据。假设一个网页是由Ajax动态加载数据的,一共有十页,但是通过Python来获取的话,一般只能获取一页,后续的九页数据均无法直接获得。

Ajax加载页面原理:通过某个接口【可以理解为一个网址】与服务器产生数据交换,从而得到新的数据加载到当前页面上。

Ajax加载页面优势:

1.反爬虫 。对于一些初级爬虫工程师来说,不懂异步加载,总感觉代码全对,但是就是获取不到想要的数据,从而怀疑自己代码有问题,直至怀疑人生。

2.更加方便地回应用户数据,优化用户体验。一个页面经常有相同的内容,如果每次都重复加载一个页面,实际上完全相同的不同也是被重复加载的,浪费响应时间。

Ajax加载页面劣势:

破坏浏览器后退按钮的正常行为。比如一个网页一共有十页,通过动态加载后,十页全部在同一个页面加载出来,但是你想后退到第九页是不可能的事情,所以,浏览器的后退按钮对于这种情况就无效了。

三、爬虫怎么应对Ajax

1.找接口

既然Ajax是通过某个接口【特定网址】与服务器交互的,那么我们只要找到这个接口,再模拟浏览器发送请求就行了。

技术难点:

(1)接口可能有多个。一个网页可能有多个特定的接口进行数据交互,需要我们自己多次尝试寻找,增大了爬虫的难度。

(2)与服务器交互的数据加密,较难破解。在与服务器产生交互式需要发送数据,但是这部分数据是网站开发人员设定的,浏览器发送了什么数据虽然大部分情况下我们能够找得到,但是数据经过了加密,破解起来比较困难。

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

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

相当于使用代码操控浏览器行为,浏览器能够获得什么数据,我们就能够获得什么数据。

技术难点:

代码量大。

3.两种方式对比

方式优点缺点
分析接口代码量少,性能很高。有的网站接口比较复杂,特别是一些通过js混淆的接口,要有一定的js功底。容易被发现是爬虫。
selenium模拟浏览器的行为。浏览器能请求到的,使用selenium也能请求到,爬虫更稳定。代码量多,性能低。

四、总结:

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

万事万物皆有利有弊,一方面快捷方便,必然导致另一方面复杂,所以全凭自己权衡利弊或者成本。


扫描二维码即可参与该课程,解锁更多爬虫知识:

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值