最近准备深入学习Python相关的爬虫知识了,如果说在使用Python爬取相对正规的网页使用"urllib2 + BeautifulSoup + 正则表达式"就能搞定的话;那么动态生成的信息页面,如Ajax、JavaScript等就需要通过"Phantomjs + CasperJS + Selenium"来实现了。所以先从安装和功能介绍入门,后面在介绍一些Python相关的爬虫应用。

一. 介绍

PhantomJS
        PhantomJS是一个服务器端的 JavaScript API 的WebKit(开源的浏览器引擎)。其支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas 和 SVG。PhantomJS可以用于页面自动化,网络监测,网页截屏,以及无界面测试等。
        Selenium
        Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性、测试系统功能,它ThoughtWorks专门为Web应用程序编写的一个验收测试工具。
        PIP
        在介绍介绍它们之前,需要安装PIP软件。正如xifeijian大神所说:“作为Python爱好者,如果不知道easy_install或者pip中的任何一个的话,那么......”。
        easy_insall的作用和perl中的cpan,ruby中的gem类似,都提供了在线一键安装模块的傻瓜方便方式,而pip是easy_install的改进版,提供更好的提示信息,删除package等功能。老版本的python中只有easy_install,没有pip。常见的具体用法如下:

easy_install的用法:
1) 安装一个包
$ easy_install <package_name>
$ easy_install "<package_name>==<version>"
2) 升级一个包
$ easy_install -U "<package_name>>=<version>" pip的用法
1) 安装一个包
$ pip install <package_name>
$ pip install <package_name>==<version>
2) 升级一个包 (如果不提供version号,升级到最新版本)
$ pip install --upgrade <package_name>>=<version>
3)删除一个包
$ pip uninstall <package_name>

二. 安装PIP

第一步:下载PIP软件
        可以在官网http://pypi.python.org/pypi/pip#downloads下载,同时cd切换到PIP目录,在通过python setup.py install安装。而我采用的是下载pip-Win_1.7.exe进行安装,下载地址如下:
        https://sites.google.com/site/pydatalog/python/pip-for-windows
        第二步:安装PIP软件

        当提示"pip and virtualenv installed"表示安装成功,那怎么测试PIP安装成功呢?
        第三步:配置环境变量
        此时在cmd中输入pip指令会提示错误“不是内部或外部命令”。

所以需要添加path环境变量。PIP安装完成后,会在Python安装目录下添加python\Scripts目录,即在python安装目录的Scripts目录下,将此目录加入环境变量中即可!过程如下:

        第四步:使用PIP命令
        下面在CMD中使用PIP命令,“pip list outdate”列举Python安装库的版本信息。

        PIP常用的命令如下所示: (参考pip安装使用详解)

 Usage:
pip <command> [options] Commands:
install 安装软件.
uninstall 卸载软件.
freeze 按着一定格式输出已安装软件列表
list 列出已安装软件.
show 显示软件详细信息.
search 搜索软件,类似yum里的search.
wheel Build wheels from your requirements.
zip 不推荐. Zip individual packages.
unzip 不推荐. Unzip individual packages.
bundle 不推荐. Create pybundles.
help 当前帮助. General Options:
-h, --help 显示帮助.
-v, --verbose 更多的输出,最多可以使用3次
-V, --version 现实版本信息然后退出.
-q, --quiet 最少的输出.
--log-file <path> 覆盖的方式记录verbose错误日志,默认文件:/root/.pip/pip.log
--log <path> 不覆盖记录verbose输出的日志.
--proxy <proxy> Specify a proxy in the form [user:passwd@]proxy.server:port.
--timeout <sec> 连接超时时间 (默认15秒).
--exists-action <action> 默认活动当一个路径总是存在: (s)witch, (i)gnore, (w)ipe, (b)ackup.
--cert <path> 证书.

三. 安装Phantomjs+Selenium

通过pip命令安装Selenium:

        官网http://phantomjs.org/下载PhantomJS解压后如下图所示:

        调用时可能会报错“Unable to start phantomjs with ghostdriver”如图:

        此时可以设置下Phantomjs的路径,同时如果你配置了Scripts目录环境变量,可以解压Phantomjs到该文件夹下。
        设置executable_path路径后的代码如下:

 from selenium import webdriver
driver = webdriver.PhantomJS(executable_path="F:\Python\phantomjs-1.9.1-windows\phantomjs.exe")
driver.get("http://www.baidu.com")
data = driver.title
print data

运行结果如下图所示:

        获取"百度一下,你就知道",对应HTML源码:
        <title>百度一下,你就知道</title>
        但是总会弹出PhantomJS的黑框,怎么办呢?同时如何通过Python直接调用Phantomjs运行JS呢?
        同时下面的代码可以进行截图:

 from selenium import webdriver
driver=webdriver.PhantomJS(executable_path="F:\Python\phantomjs-1.9.1-windows\phantomjs.exe")
driver.get("http://www.csdn.net")
data = driver.title
driver.save_screenshot('csdn.png')
print data

输出如下图所示,图片太长仅仅部分:

>>>
CSDN.NET - 全球最大中文IT社区,为IT专业技术人员提供最全面的信息传播和服务平台
>>>

PS:我准备使用C#调用PhantomJS.exe完成页面截图功能,但是没有成功,而且使用WebBrowser中DrawToBitmap函数获取图片,由于ActiveX 控件不支持DrawToBitmap方法,获取总是空白的,各种问题。

参考资料:
        数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置(强推)
        数据抓取的艺术(二):数据抓取程序优化
        Python使用Selenium/PhantomJS(强推)
        Python selenium的js扩展实现
        使用python+phantomjs抓取动态页面
        用phantomjs 进行网页整页截屏
        Selenium-webdriver系列教程(15)——万能的截图(强推)
        pyspider 爬虫教程(三):使用 PhantomJS 渲染带 JS 的页面
       【PHP】【.NET】【JS】【AJAX】关于抓取网页源代码的问题
        使用python/casperjs编写终极爬虫-客户端App的抓取
        Python 爬虫如何获取 JS 生成的 URL 和网页内容-知乎
        通过 WebBrowser 获取网页截图 - C#
        Control.DrawToBitmap 方法不支持Ajax - 官网
        IE浏览器整页截屏程序(二) - C#
        C# 网络编程之最简单浏览器实现 - 自己

最后希望该篇基础性文章对你有所帮助吧!如果有不足之处,还请海涵~
      (By:Eastmount 2015-8-19 晚上8点   http://blog.csdn.net/eastmount/

[Python爬虫] 在Windows下安装PIP+Phantomjs+Selenium的更多相关文章

  1. [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)

    最近在使用Python爬取网页内容时,总是遇到JS临时加载.动态获取网页信息的困难.例如爬取CSDN下载资源评论.搜狐图片中的“原图”等,此时尝试学习Phantomjs和CasperJS来解决这个问题 ...

  2. windows下安装pip和easy_install

    1. 从这里下载 get-pip.py: https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py 2. python ...

  3. python windows下安装pip及rarfile

    python之所以被广泛使用,倒不见得是本身语法简单,而是而nodejs/javascript一样把三方库的依赖管理简化了,而不用和java一样非得通过maven管理,而且还得打包后在classpat ...

  4. Windows下安装pip(转自http://www.cnblogs.com/yuanzm/p/4089856.html)

    windows下面安装Python和pip终极教程 在大二的时候接触过一段时间的Python,最近又开始玩起了这门语言.总的来说,个人很喜欢Python的语言风格,但是这门语言对于windows并不算 ...

  5. python笔记:windows 下安装 python lxml

    原文:http://blog.csdn.net/zhaokuo719/article/details/8209496 windows 环境下安装 lxml python 1.首先保证你的python ...

  6. windows下安装pip

    1.在安装pip前,请确认win系统中已经安装好了python,和easy_install工具,如果系统安装成功,easy_install在目录C:\Python27\Scripts 下面,确认截图如 ...

  7. 在windows下安装pip scrapy...

    将 C:\Users\用户名\AppData\Local\Programs\Python\Python35\Scripts C:\Users\用户名\AppData\Local\Programs\Py ...

  8. windows下安装pip教程

    下载地址是:https://pypi.python.org/pypi/pip#downloads 下载完成之后,解压到一个文件夹,用CMD控制台进入解压目录,输入: python setup.py i ...

  9. linux和windows下安装python拓展包及requirement.txt安装类库

    python拓展包安装 直接安装拓展包默认路径: Unix(Linux)默认路径:/usr/local/lib/pythonX.Y/site-packagesWindows默认路径:C:\Python ...

随机推荐

  1. apache 泛域名配置

    需求:  在apache上配置两个项目,分别是项目a和项目b,a.baiye5.com访问项目a,其余的除了a前缀名之外的例如b2b.baiye5.com .*.baiye5.com等都访问项目b. ...

  2. 以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用 (转)

    以前编写的inno setup脚本,涵盖了自定义安装界面,调用dll等等应用 (转) ; Script generated by the Inno Setup 脚本向导. ; SEE THE DOCU ...

  3. Python基础(七)内置函数

    今天来介绍一下Python解释器包含的一系列的内置函数,下面表格按字母顺序列出了内置函数: 下面就一一介绍一下内置函数的用法: 1.abs() 返回一个数值的绝对值,可以是整数或浮点数等. 1 2 3 ...

  4. 校验日期函数的js

    /判断输入内容是否为空 function IsNull(){ var str = document.getElementById('str').value.trim(); if(str.length= ...

  5. codevs 2756树上的路径

    题意: 2756 树上的路径  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master    题目描述 Description 给出一棵树,求出最小的k,使得,且在树 ...

  6. [转] swf文件加密基础

    本来打算下班回来就写这个东西,一方面算是对今天学习的一个笔记记录,另外一方面,给一些朋友普及一些swf文件加密基础知识.之所以说是基础,那是因为我也是刚学习了一点,灰常的基础.不过晚上看了一会我是传奇 ...

  7. Java学习笔记14--动态代理

    InvocationHandler接口 public interface InvocationHandler{ public Object invoke(Object proxy,Method met ...

  8. DB2不记录事务日志

    1. DB2大数据处理不记录事务日志步骤:  建表需要添加属性“NOT LOGGED INITIALLY”  在大批量更改操作的同一个事务开始时执行:“ALTER TABLE tabname ACTI ...

  9. IOS网络请求原理

    1,为什么要用到网络,  只有通过网络跟外界进行数据交互,数据更新,应用才能保持哦新鲜.活力 如果没有网络,也就缺少数据变化.变成一滩死水. 2, 良好的移动网络应用 = 良好的UI + 良好的用户体 ...

  10. 关于php中正则匹配包括换行符在内的任意字符的问题总结

    要使用正则匹配任意字符的话,通常有以下几种方法,这里我分别对每一种方法在使用的过程中做一个总结: 第一种方式:[.\n]*? 示例 ? PHP preg_match_all('/<div cla ...