2020/04/09 01-PhantomJS和Selenium简单应用

之前的豆瓣上的热门电影的这些数据是异步请求,所谓的保存的数据其实跟右键保存源代码是一样的

跟右键审查元素是两码事,这个审查元素其实是实时的DOM,DOM里有什么元素就能看到什么元素,跟源代码两码事,源代码是第一次拿来的数据。审查元素是当前浏览器提供的实时DOM的虚拟的东西,里面可以看到这些数据,因为浏览器就是玩DOM的,但是爬过来的时候没有。
怎么办?可以用google插件比如XHR调试是否有你需要的数据,但是有的时候很难做到

在这里插入图片描述
SPA技术有些网站很流行,还有ajax,多个页面有多个模板,里面的组件换一换就行了,这里面更难提取了,所有的页面都是js动态提取的,只要发起异步调用还好说。
也有一种可能性,所有数据随着网页回来但是放在了一个复杂的数据结构在js脚本中,它是放在了网页script,js标签里了,然后js启动之后可以搬到jQuery,然后把数据分析抽取其中的数据,组织好后,然后动态增加DOM树,所以你使用XHR可能就没数据,请求回来,数据没放在网页中,只是放在了js脚本里,通过对js数据的处理,然后再把数据动态加到DOM树来

在这里插入图片描述
能否看到什么拿什么,直接用审查元素的方式,浏览器最重要的是内核,内核里有两大功能,渲染引擎,js引擎。动态的内容,现在爬虫爬response是拿不到,现在直接操作浏览器应该什么都看拿了
在这里插入图片描述
网站有ajax和SPA,是直接发起异步请求,它的页面就不用动了,已经呈现的这些图片,就不需要发起链接了,也就是不需要和服务器交互,只需要用ajax和服务端交互即可。发起异步http请求把数据装载回来,直接调用回调,回调可以直接处理,DOM动态加几个节点,节省不必要的流量,只需要刷新部分DOM即可
在这里插入图片描述
之前操作request对象,requests封装了urllib,现在问resquest要,我们只能拿到不想要的东西
在这里插入图片描述
在这里插入图片描述
解压就可以使用,要用的就是它,这就是浏览器,这个称为无头浏览器,只具备内核不具备外壳,无界面的浏览器
在这里插入图片描述
可以自己写个样例

在这里插入图片描述
严格模式

在这里插入图片描述
这样就可以运行,因为它具备引擎

在这里插入图片描述
测试成功运行

在这里插入图片描述
如果操作,在测试领域有Selenium,开发了很多借口,支持很多浏览器,是做web自动化测试方向的,模拟人在浏览器的操作,,浏览器暴露操作接口,selenium通过接口模拟点击。我们通过对selenium调用统一接口,调用不同的浏览器。
现在firefox,google都支持无头模式

在这里插入图片描述
安装selenium

在这里插入图片描述
在这里插入图片描述
web driver是核心
在这里插入图片描述
在这里插入图片描述
这一块没有,找不到web driver
在这里插入图片描述
这里有一个web driver

在这里插入图片描述
导入了一大堆

在这里插入图片描述
我们使用phantomjs
在这里插入图片描述
指定路径

在这里插入图片描述
这个习惯称为driver,save_screenshot屏幕快照
在这里插入图片描述
可以设置窗口的大小,内部是会帮你绘制,想办法把DOM树展开的

在这里插入图片描述
支持phantomjs过期了,建议用chrome和firefox替代,继续使用即可

在这里插入图片描述
这样就拿回来了
在这里插入图片描述

在这里插入图片描述
但是光有这种方法并不能解决所有应用

发布了243 篇原创文章 · 获赞 6 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_42227818/article/details/105411120