python selenium 爬取js加载的内容为空_Selenium + BeautifulSoup爬虫入门,对于JS加载的网页数据无法读取的解决办法...

问题来源

爬虫写完并不是一劳永逸的,因为原站的代码迭代,我们上次文章写的代码就变成了a pile of shit。生活不如意,十有八九,这并不是阻碍我们学习的绊脚石。我们出发点是学习,为了使这次对的代码具有一定的Robust(健壮性),同样为了学习新的技术。这次采用Selenium的方式来编写爬虫的代码,或许情况会有所好转/(ㄒoㄒ)/~~。

什么时候用Requests?

通常我们在对网页进行抓包的时候,我们通常期待能找到网站的API请求接口,API可以通过参数修改进行构造。返回结果最好是标准的Json格式,这样也方便我们在Python内做数据的持久化。像这种情况我们用requests模块无疑是最好的选择,因为这样的代码速度快质量高。但现实确实很残酷的,多数网站都会通过JS动态填充网页数据来防止爬虫。采取这种措施的网页请求返回的只有网页的框架,具体的数据都是通过Ajax动态渲染到网页内的。requests是没有加载执行JS的能力的,所以我们没办法通过requests的返回得到真实数据。

什么时候用Selenium?

对于这种JS填充数据的网站,解决的方法有各种各样。通常的方法还是通过抓包获取到JS获取数据的接口,优势之前说过了,这样写的代码比较高效。缺点也很明显,你需要有一定的JS调试基础。因为有些接口你虽然找到了,但是接口传的的参数经过JS加密,需要对JS进行分析找到加密算法,否则即使抓到了API也无法使用。对于简单的JS或许可以在浏览器内调试一下,但是如果是经过混淆压缩的JS代码简直让人头都大了,这对于我们新手难度有点大。通过Selenium就可以化繁为简,轻松的实现我们需要的功能。

什么是Selenium?

什么是Selenium?-引自维基百科

Selenium就是一个web自动化测试框架。他允许用户通过编写代码操纵浏览器,实现像真正用户一样的浏览器操作行为。对于一些反爬机制比较苛刻的网站,我们可以用Selenium操作浏览器模拟真实用户操作来爬取网站数据。这样的好处就是无需考虑请求的发送,cookie,user-agent等等一系列的要求,只要编写代码操作浏览器,通过读取浏览器内容获取想要的数据。浏览器具有执行JS的能力,在网页加载完成之后读取网页源码,就可以取到我们想要的数据。

你可能感兴趣的:(python,selenium,爬取js加载的内容为空)