-
Python爬虫基础讲解(十二):初探selenium——动态网页&静态网页
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),Mozilla Chrome,Safari,Google
Chrome,Opera等。
动态网页&静态网页
静态网页是指存放在服务器文件系统中实实在在的HTML文件。当用户在浏览器中输入页面的
URL,然后回车,浏览器就会将对应的HTML文件下载、渲染并呈现在窗口中。早期的网站通常都是由静态页面制作的。
1. 动态网页
动态网页是相对于静态网页而言的。当浏览器请求服务器的某个页面时,服务器根据当前时间、环境参数、数据库操作等动态的生成HTML页面,然后在发送给浏览器(后面的处理就跟静态网页一样了)。
很明显,动态网页中的“动态"是指服务器端页面的动态生成,相反,"静态"则指页面是实实在在的、独立的文件。
注意:
-
动态页面技术是与静态页面技术相对应的,也就是说,网页URL的后缀不是
.htm、.html、.shtml、.xml等静态网页的常见形式,而是以.asp、.jsp、.php、.perl、.cgi等形式为后缀,并且在动态网页网址中有一个标志性的符号——“? "。 -
这里说的动态网页,与网页上的各种动画、滚动字幕等视觉上的“动态效果"没有直接关系,动态网页也可以是纯文字内容的,也可以是包含各种动画的内容,这些只是网页具体内容的表现形式,无论网页是否具有动态效果,采用动态网站技术生成的网页都称为动态网页。
1.1 JavaScript
JavaScript是-种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常lavaScript脚本是通过嵌入在HTML 中来实现自身的功能的。
可以在网页源代码的标签里看到,比如:
<script type="text/javascript" src="https://statics . huxiu. com/w/mi ni/static_ 2015/js/sea. js?v=201601150944"> </script>
JavaScript可以动态地创建HTML内容,这些内容只有在JavaScript代码执行之后才会产生和显示如果使用传统的方法采集页面内容,就只能获得JavaScript代码执行之前页面上的内容。
JQuery
JQuery是一个快速、 简洁的JavaScript框架, 它封装JavaScript常用的功能代码,提供-种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。-一个网站使用JQuery的特征,就是源代码里包含了JQuery入口,比如:
<script type="text/javascript" src="https://stati CS . huxiu. com/w/mini/static_ 2015/js/jquery-1.11.1.min.js? v=201512181512"></script>
如果一个网站网页源码中出现了jQuery,那么采集这个网站数据的时候要格外小心。因为jQuery可以动态地创建HTML内容,这些内容只有在JavaScript代码执行之后才会产生和显示。如果使用传统的方法采集页面内容,就只能获得JavaScript代码执行之 前页面上的内容。
1.2 Ajax
使用Ajax技术更新网页的内容的网站有个很大的特点,那就是可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
Ajax其实并不是一-门语言,而是用来完成网络任务(可以认为它与网络数据采集差不多)的一系列技术。Ajax网站不需要使用整个的页面加载就可以和网络服务器进行交互。
1.3 DHTML
DHTML: Dynamic HTML动态的HTML,这门技术并不是一 -门 ]新的技术,而是将之 前所学的
HTML、CSS、 JavaScript整合在一-起, 利用S操作页面元素,让元素具有动态的变化,使得页面和用户具有交互的行为。
2. 动态网页处理方法
使用动态加载的网站,用Python解决有如下几种途径:
-
直接破解JavaScript代码里采集内容。
-
抓包分析,查看截图的请求响应信息,伪造请求,实现响应的获取。(推荐)
-
用Python的第三方库运行JavaScript,直接采集你在浏览器里看到的页面。(推荐)
既然浏览器能拿到数据,那么,可以模拟一个浏览器,从浏览器中拿到数据。也就是用程序控制浏览器,从而达到数据采集的目的。