万字博文教你爬虫必备->Selenium【详解篇】(初篇)

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。

  1. 👻👻相信不少小伙伴们在经历过我的上几篇关于爬虫技术的万字博文的轮番轰炸后,已经可以独立开发出属于自己的爬虫项目!!!——爬虫之路,已然开启!👻👻
  2. 😬😬但是前几天有粉丝VX问了我这样一个问题:“我在浏览器中通过开发者工具看到的网页源码与我通过requests库爬取下来的网页源码完全不一样!这是怎么一回事啊?通过博主你教的方法都解决不了哎!”😬😬

其实这就涉及到了前端方面的知识,但是本人精力时间有限,所以目前暂只更新了一篇HTML的必备知识文,关注本博主——后面会加把劲继续更新CSS及JavaScript相关知识的文哦!  

💦身为爬虫人也必须要会的前端知识前两篇之HTML讲解。 不久就会出了哦!

  1. ⏰⏰关于这个问题,我们先要知道为啥子会出现这种情况然后才能对症下药。首先要知道的是requests获取的都是原始的HTML文档,而浏览器中的页面都是经过JavaScript处理数据后生成的结果,这些数据的来源多种多样,可能是通过Ajax加载的,可能是包含在HTML文档里的,也可能是经过JavaScript和特定算法计算后生成的。 ⏰⏰

对于第一种情况:数据加载是一种异步加载方式,原始的页面最初不会包含某些数据,原始页面加载完后,会再向服务器请求某个接口获取数据,然后数据才被处理从而呈现在网页上,这其实就是发送了一个Ajax请求(这就是JavaScript动态渲染页面的一种情形!);

 对于第三种情况:数据加载是通过JavaScript和特定算法计算后生成的,并非原始HTML代码,这其中也并不包含Ajax请求。

  1. 📻📻原理知道了,下面的问题就是我们到底该如何解决呢?📻📻
首先第一种方法(适用于解决上面第一种情况):分析网页后台向接口发送的Ajax请求,使用requests库来模拟Ajax请求,这样就可以成功抓取了!

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%