﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-polly study cs-随笔分类-Python</title><link>http://www.cppblog.com/polly-yang/category/19938.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 18 Sep 2012 21:46:05 GMT</lastBuildDate><pubDate>Tue, 18 Sep 2012 21:46:05 GMT</pubDate><ttl>60</ttl><item><title>【转载】在Ubuntu下安装Python科学计算环境</title><link>http://www.cppblog.com/polly-yang/archive/2012/09/18/191093.html</link><dc:creator>polly</dc:creator><author>polly</author><pubDate>Tue, 18 Sep 2012 05:02:00 GMT</pubDate><guid>http://www.cppblog.com/polly-yang/archive/2012/09/18/191093.html</guid><wfw:comment>http://www.cppblog.com/polly-yang/comments/191093.html</wfw:comment><comments>http://www.cppblog.com/polly-yang/archive/2012/09/18/191093.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/polly-yang/comments/commentRss/191093.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/polly-yang/services/trackbacks/191093.html</trackback:ping><description><![CDATA[<p style="font-size: 12px" class="reprint"><strong>原文地址</strong>：<a href="http://blog.chinaunix.net/uid-23100982-id-3252291.html" target="_blank">在Ubuntu中安装Python科学计算环境</a> <strong>作者</strong>：<a href="http://blog.chinaunix.net/uid/23100982.html" target="_blank">HyryStudio</a></p><br />
<div style="line-height: 1.3" id="detail" class="detail">
<p>
<p style="text-align: justify; line-height: 21px; background-color: rgb(255,255,255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, sans-serif">在Ubuntu下安装Python模块通常可以使用apt-get和pip命令。apt-get命令是Ubuntu自带的包管理命令，而pip则是Python安装扩展模块的工具，通常pip会下载扩展模块的源代码并编译安装。</p>
<p style="text-align: justify; line-height: 21px; background-color: rgb(255,255,255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, sans-serif">Ubuntu 12.04中缺省安装了Python2.7.3，首先通过下面的命令安装pip，pip是Python的一个安装和管理扩展库的工具。</p>
<div style="line-height: 21px; background-color: rgb(255,255,255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, sans-serif">
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo apt-get install python-pip<br /></pre></div></div>
<p style="text-align: justify; line-height: 21px; background-color: rgb(255,255,255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, sans-serif">安装Python开发环境，方便今后编译其他扩展库，占用空间92.8M：</p>
<div style="line-height: 21px; background-color: rgb(255,255,255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, sans-serif">
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo apt-get install python-dev<br /></pre></div></div>
<div style="line-height: 21px; background-color: rgb(255,255,255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, sans-serif" id="ipython">
<h1 style="line-height: 50px; font-family: Georgia, 'Times New Roman', Helvetica, Arial, sans-serif; color: rgb(24,24,24); font-weight: normal"><font size="4">IPython</font><a style="outline-width: 0px; display: inline; visibility: hidden; color: rgb(0,105,214)" title="Permalink to this headline" href="http://hyry.dip.jp/tech/slice/slice.html/24#ipython" target="_blank"></a></h1>
<p style="text-align: justify">为了安装最新版的IPython 0.13beta，需要下载IPython源代码，并执行安装命令。在IPython 0.13beta中提供了改进版本的IPython notebook。下面的命令首先安装版本管理软件git，然后通过git命令从IPython的开发代码库中下载最新版本的IPython源代码，并执行安装命令：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre><span style="color: rgb(0,112,32)">cd</span><br />sudo apt-get install git<br />git clone https://github.com/ipython/ipython.git<br /><span style="color: rgb(0,112,32)">cd </span>ipython<br />sudo python setup.py install<br /></pre></div></div>
<p style="text-align: justify">如果安装目前的最新稳定版本，可以输入:</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo apt-get install ipython<br /></pre></div></div>
<p style="text-align: justify">安装完毕之后，请输入ipython命令测试是否能正常启动。</p>
<p style="text-align: justify">为了让IPython notebook工作，还还需要安装tornado和pyzmq：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo pip install tornado<br />sudo apt-get install libzmq-dev<br />sudo pip install pyzmq<br />sudo pip install pygments<br /></pre></div></div>
<p style="text-align: justify">下面测试IPython：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre><span style="color: rgb(0,112,32)">cd</span><br />mkdir notebook<br /><span style="color: rgb(0,112,32)">cd </span>notebook<br />ipython notebook<br /></pre></div></div>
<p style="text-align: justify">为了在IPython中离线使用LaTeX数学公式，需要安装mathjax，首先输入下面的命令启动ipython notebook：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo ipython notebook<br /></pre></div></div>
<p style="text-align: justify">在IPython notebook界面中输入：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre><span style="color: rgb(0,112,32); font-weight: bold">from</span> <span style="color: rgb(14,132,181); font-weight: bold">IPython.external.mathjax</span> <span style="color: rgb(0,112,32); font-weight: bold">import</span> <span>install_mathjax</span><br /><span>install_mathjax</span><span>()</span><br /></pre></div></div></div>
<div style="line-height: 21px; background-color: rgb(255,255,255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, sans-serif" id="numpy-scipymatplotlib">
<h1 style="line-height: 50px; font-family: Georgia, 'Times New Roman', Helvetica, Arial, sans-serif; color: rgb(24,24,24); font-weight: normal"><font size="4">NumPy，SciPy和matplotlib</font><a style="outline-width: 0px; display: inline; visibility: hidden; color: rgb(0,105,214)" title="Permalink to this headline" href="http://hyry.dip.jp/tech/slice/slice.html/24#numpy-scipymatplotlib" target="_blank"></a></h1>
<p style="text-align: justify">通过apt-get命令可以快速安装这三个库：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo apt-get install python-numpy<br />sudo apt-get install python-scipy<br />sudo apt-get install python-matplotlib<br /></pre></div></div>
<p style="text-align: justify">如果需要通过pip编译安装，可以先用apt-get命令安装所有编译所需的库：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo apt-get build-dep python-numpy<br />sudo apt-get build-dep python-scipy<br /></pre></div></div>
<p style="text-align: justify">然后通过pip命令安装：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo pip install numpy<br />sudo pip install scipy<br /></pre></div></div>
<div style="background-image: url(http://hyry.dip.jp/tech/static/_static/warning.png); border-bottom: rgb(119,119,119) 1px solid; border-left: rgb(119,119,119) 1px solid; padding-bottom: 4px; background-color: rgb(238,238,238); margin: 5px; min-height: 25px; padding-left: 40px; padding-right: 4px; background-position: 5px 50%; vertical-align: baseline; border-top: rgb(119,119,119) 1px solid; border-right: rgb(119,119,119) 1px solid; padding-top: 4px">通过build-dep会安装很多库，包括Python 3.2。</div></div>
<div style="line-height: 21px; background-color: rgb(255,255,255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, sans-serif" id="pyqt4spyder">
<h1 style="line-height: 50px; font-family: Georgia, 'Times New Roman', Helvetica, Arial, sans-serif; color: rgb(24,24,24); font-weight: normal"><font size="4">PyQt4和Spyder</font><a style="outline-width: 0px; display: inline; visibility: hidden; color: rgb(0,105,214)" title="Permalink to this headline" href="http://hyry.dip.jp/tech/slice/slice.html/24#pyqt4spyder" target="_blank"></a></h1>
<p style="text-align: justify">下面的命令安装PyQt4，Qt界面设计器，PyQt4的开发工具以及文档：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo apt-get install python-qt4<br />sudo apt-get install qt4-designer<br />sudo apt-get install pyqt4-dev-tools<br />sudo apt-get install python-qt4-doc<br /></pre></div></div>
<p style="text-align: justify">安装完毕之后，文档位于：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>/usr/share/doc/python-qt4-doc<br /></pre></div></div>
<p style="text-align: justify">安装好PyQt4之后通过下面的命令安装Spyder：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo apt-get install spyder<br /></pre></div></div>
<p style="text-align: justify">由于Spyder经常更新，通过下面的命令可以安装最新版：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo pip install spyder --upgrade<br /></pre></div></div></div>
<div style="line-height: 21px; background-color: rgb(255,255,255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, sans-serif" id="cythonswig">
<h1 style="line-height: 50px; font-family: Georgia, 'Times New Roman', Helvetica, Arial, sans-serif; color: rgb(24,24,24); font-weight: normal"><font size="4">cython和SWIG</font><a style="outline-width: 0px; display: inline; visibility: hidden; color: rgb(0,105,214)" title="Permalink to this headline" href="http://hyry.dip.jp/tech/slice/slice.html/24#cythonswig" target="_blank"></a></h1>
<p style="text-align: justify">Cython和SWIG是编写Python扩展模块的工具：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo pip install cython<br />sudo apt-get install swig<br /></pre></div></div>
<p style="text-align: justify">输入 <tt style="padding-bottom: 0px; border-right-width: 0px; background-color: rgb(236,240,243); margin: 0px; padding-left: 3px; padding-right: 3px; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"><span>cython</span> <span>--version</span></tt> 和 <tt style="padding-bottom: 0px; border-right-width: 0px; background-color: rgb(236,240,243); margin: 0px; padding-left: 3px; padding-right: 3px; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"><span>swig</span> <span>-version</span></tt> 查看版本。</p></div>
<div style="line-height: 21px; background-color: rgb(255,255,255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, sans-serif" id="ets">
<h1 style="line-height: 50px; font-family: Georgia, 'Times New Roman', Helvetica, Arial, sans-serif; color: rgb(24,24,24); font-weight: normal"><font size="4">ETS</font><a style="outline-width: 0px; display: inline; visibility: hidden; color: rgb(0,105,214)" title="Permalink to this headline" href="http://hyry.dip.jp/tech/slice/slice.html/24#ets" target="_blank"></a></h1>
<p style="text-align: justify">ETS是enthought公司开发的一套科学计算软件包，其中的Mayavi通过VTK实现数据的三维可视化。</p>
<p style="text-align: justify">首先通过下面的命令安装编译ETS所需的库：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo apt-get install python-dev libxtst-dev scons python-vtk  pyqt4-dev-tools python2.7-wxgtk2.8 python-configobj<br />sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev<br /></pre></div></div>
<p style="text-align: justify">创建ets目录，并在此目录下下载ets.py，运行ets.py可以复制最新版的ETS源程序，并安装：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>mkdir ets<br /><span style="color: rgb(0,112,32)">cd </span>ets<br />wget https://github.com/enthought/ets/raw/master/ets.py<br />python ets.py clone<br />sudo python ets.py develop<br /><span style="color: rgb(64,128,144)">#sudo python ets.py install    或者运行install安装</span><br /></pre></div></div>
<p style="text-align: justify">如果一切正常，那么输入 <tt style="padding-bottom: 0px; border-right-width: 0px; background-color: rgb(236,240,243); margin: 0px; padding-left: 3px; padding-right: 3px; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"><span>mayavi2</span></tt> 命令则会启动mayavi。</p></div>
<div style="line-height: 21px; background-color: rgb(255,255,255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, sans-serif" id="opencv">
<h1 style="line-height: 50px; font-family: Georgia, 'Times New Roman', Helvetica, Arial, sans-serif; color: rgb(24,24,24); font-weight: normal"><font size="4">OpenCV</font><a style="outline-width: 0px; display: inline; visibility: hidden; color: rgb(0,105,214)" title="Permalink to this headline" href="http://hyry.dip.jp/tech/slice/slice.html/24#opencv" target="_blank"></a></h1>
<p style="text-align: justify">为了编译OpenCV需要下载cmake编译工具，和一些依赖库：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>sudo apt-get install build-essential<br />sudo apt-get install cmake<br />sudo apt-get install cmake-gui<br />sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev<br />sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libjasper-dev<br /></pre></div></div>
<p style="text-align: justify">然后从 <a style="outline-width: 0px; display: inline; color: rgb(0,105,214)" href="http://sourceforge.net/projects/opencvlibrary/" target="_blank">http://sourceforge.net/projects/opencvlibrary/</a> 下载最新版的OpenCV源代码，并解压。然后创建编译用的目录release，并启动cmake-gui:</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre>mkdir release<br />cmake-gui<br /></pre></div></div>
<p style="text-align: justify">在界面中选择OpenCV源代码的目录，和编译输出目录release，然后按Configure按钮，并根据需要设置各个编译选项，最后点Generate按钮，退出cmake-gui界面。进入编译路径，执行下面的命令：</p>
<div>
<div style="border-bottom: rgb(221,221,221) 1px solid; border-left: rgb(221,221,221) 1px solid; padding-bottom: 6px; background-color: rgb(247,255,232); margin: 0px; padding-left: 6px; padding-right: 6px; font-family: Consolas, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace; vertical-align: baseline; border-top: rgb(221,221,221) 1px solid; border-right: rgb(221,221,221) 1px solid; padding-top: 6px"><pre><span style="color: rgb(0,112,32)">cd </span>release<br />make<br />sudo make install<br /></pre></div></div>
<p style="text-align: justify">安装完毕之后，启动IPython，并输入 <tt style="padding-bottom: 0px; border-right-width: 0px; background-color: rgb(236,240,243); margin: 0px; padding-left: 3px; padding-right: 3px; border-top-width: 0px; border-bottom-width: 0px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"><span>import</span> <span>cv2</span></tt> 测试OpenCV是否能正常载入。</p></div>
<p>&nbsp;</p></div><img src ="http://www.cppblog.com/polly-yang/aggbug/191093.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/polly-yang/" target="_blank">polly</a> 2012-09-18 13:02 <a href="http://www.cppblog.com/polly-yang/archive/2012/09/18/191093.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Python登陆人人网并抓取新鲜事</title><link>http://www.cppblog.com/polly-yang/archive/2012/09/17/190975.html</link><dc:creator>polly</dc:creator><author>polly</author><pubDate>Mon, 17 Sep 2012 06:20:00 GMT</pubDate><guid>http://www.cppblog.com/polly-yang/archive/2012/09/17/190975.html</guid><wfw:comment>http://www.cppblog.com/polly-yang/comments/190975.html</wfw:comment><comments>http://www.cppblog.com/polly-yang/archive/2012/09/17/190975.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/polly-yang/comments/commentRss/190975.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/polly-yang/services/trackbacks/190975.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Code_Closed_Image_141844" onclick="this.style.display='none'; Code_Closed_Text_141844.style.display='none'; Code_Open_Image_141844.style.display='inline'; Code_Open_Text_141844.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: none" id="Code_Open_Image_141844" onclick="this.style.display='none'; Code_Open_Text_141844.style.display='none'; Code_Closed_Image_141844.style.display='inline'; Code_Closed_Text_141844.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Code_Closed_Text_141844"></span><span style="display: none" id="Code_Open_Text_141844"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;sgmllib&nbsp;</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;SGMLParser<br /></span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;sys,urllib2,urllib,cookielib<br /></span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;spider(SGMLParser):<br /></span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">__init__</span><span style="color: #000000">(self,email,password):<br /></span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SGMLParser.</span><span style="color: #800080">__init__</span><span style="color: #000000">(self)<br /></span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.h3</span><span style="color: #000000">=</span><span style="color: #000000">False<br /></span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.h3_is_ready</span><span style="color: #000000">=</span><span style="color: #000000">False<br /></span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.div</span><span style="color: #000000">=</span><span style="color: #000000">False<br /></span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.h3_and_div</span><span style="color: #000000">=</span><span style="color: #000000">False<br /></span><span style="color: #008080">10</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.a</span><span style="color: #000000">=</span><span style="color: #000000">False<br /></span><span style="color: #008080">11</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.depth</span><span style="color: #000000">=</span><span style="color: #000000">0<br /></span><span style="color: #008080">12</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.names</span><span style="color: #000000">=</span><span style="color: #800000">""</span><span style="color: #000000"><br /></span><span style="color: #008080">13</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.dic</span><span style="color: #000000">=</span><span style="color: #000000">{}&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">14</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">15</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.email</span><span style="color: #000000">=</span><span style="color: #000000">email<br /></span><span style="color: #008080">16</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.password</span><span style="color: #000000">=</span><span style="color: #000000">password<br /></span><span style="color: #008080">17</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.domain</span><span style="color: #000000">=</span><span style="color: #800000">'</span><span style="color: #800000">renren.com</span><span style="color: #800000">'</span><span style="color: #000000"><br /></span><span style="color: #008080">18</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">:<br /></span><span style="color: #008080">19</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookie</span><span style="color: #000000">=</span><span style="color: #000000">cookielib.CookieJar()<br /></span><span style="color: #008080">20</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookieProc</span><span style="color: #000000">=</span><span style="color: #000000">urllib2.HTTPCookieProcessor(cookie)<br /></span><span style="color: #008080">21</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">except</span><span style="color: #000000">:<br /></span><span style="color: #008080">22</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">raise</span><span style="color: #000000"><br /></span><span style="color: #008080">23</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">:<br /></span><span style="color: #008080">24</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opener</span><span style="color: #000000">=</span><span style="color: #000000">urllib2.build_opener(cookieProc)<br /></span><span style="color: #008080">25</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;urllib2.install_opener(opener)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">26</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /></span><span style="color: #008080">27</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;login(self):<br /></span><span style="color: #008080">28</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #000000">=</span><span style="color: #800000">'</span><span style="color: #800000">http://www.renren.com/PLogin.do</span><span style="color: #800000">'</span><span style="color: #000000"><br /></span><span style="color: #008080">29</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;postdata</span><span style="color: #000000">=</span><span style="color: #000000">{<br /></span><span style="color: #008080">30</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">email</span><span style="color: #800000">'</span><span style="color: #000000">:self.email,<br /></span><span style="color: #008080">31</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">password</span><span style="color: #800000">'</span><span style="color: #000000">:self.password,<br /></span><span style="color: #008080">32</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">domain</span><span style="color: #800000">'</span><span style="color: #000000">:self.domain&nbsp;&nbsp;<br /></span><span style="color: #008080">33</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">34</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;req</span><span style="color: #000000">=</span><span style="color: #000000">urllib2.Request(<br /></span><span style="color: #008080">35</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url,<br /></span><span style="color: #008080">36</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;urllib.urlencode(postdata)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">37</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br /></span><span style="color: #008080">38</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">39</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.file</span><span style="color: #000000">=</span><span style="color: #000000">urllib2.urlopen(req).read()<br /></span><span style="color: #008080">40</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">print&nbsp;self.file</span><span style="color: #008000"><br /></span><span style="color: #008080">41</span><span style="color: #008000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;start_h3(self,attrs):<br /></span><span style="color: #008080">42</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.h3&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;True<br /></span><span style="color: #008080">43</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;end_h3(self):<br /></span><span style="color: #008080">44</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.h3</span><span style="color: #000000">=</span><span style="color: #000000">False<br /></span><span style="color: #008080">45</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.h3_is_ready</span><span style="color: #000000">=</span><span style="color: #000000">True<br /></span><span style="color: #008080">46</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">47</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;start_a(self,attrs):<br /></span><span style="color: #008080">48</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;self.h3&nbsp;</span><span style="color: #0000ff">or</span><span style="color: #000000">&nbsp;self.div:<br /></span><span style="color: #008080">49</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.a</span><span style="color: #000000">=</span><span style="color: #000000">True<br /></span><span style="color: #008080">50</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;end_a(self):<br /></span><span style="color: #008080">51</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.a</span><span style="color: #000000">=</span><span style="color: #000000">False<br /></span><span style="color: #008080">52</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">53</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;start_div(self,attrs):<br /></span><span style="color: #008080">54</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;self.h3_is_ready&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;False:<br /></span><span style="color: #008080">55</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000"><br /></span><span style="color: #008080">56</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;self.div</span><span style="color: #000000">==</span><span style="color: #000000">True:<br /></span><span style="color: #008080">57</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.depth&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000"><br /></span><span style="color: #008080">58</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">59</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;k,v&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;attrs:<br /></span><span style="color: #008080">60</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;k&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">class</span><span style="color: #800000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">and</span><span style="color: #000000">&nbsp;v&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">content</span><span style="color: #800000">'</span><span style="color: #000000">:<br /></span><span style="color: #008080">61</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.div</span><span style="color: #000000">=</span><span style="color: #000000">True;<br /></span><span style="color: #008080">62</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.h3_and_div</span><span style="color: #000000">=</span><span style="color: #000000">True&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">h3&nbsp;and&nbsp;div&nbsp;is&nbsp;connected</span><span style="color: #008000"><br /></span><span style="color: #008080">63</span><span style="color: #008000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;end_div(self):<br /></span><span style="color: #008080">64</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;self.depth&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;0:<br /></span><span style="color: #008080">65</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.div</span><span style="color: #000000">=</span><span style="color: #000000">False<br /></span><span style="color: #008080">66</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.h3_and_div</span><span style="color: #000000">=</span><span style="color: #000000">False<br /></span><span style="color: #008080">67</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.h3_is_ready</span><span style="color: #000000">=</span><span style="color: #000000">False<br /></span><span style="color: #008080">68</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.names</span><span style="color: #000000">=</span><span style="color: #800000">""</span><span style="color: #000000"><br /></span><span style="color: #008080">69</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;self.div&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;True:<br /></span><span style="color: #008080">70</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.depth</span><span style="color: #000000">-=</span><span style="color: #000000">1</span><span style="color: #000000"><br /></span><span style="color: #008080">71</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;handle_data(self,text):<br /></span><span style="color: #008080">72</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">record&nbsp;the&nbsp;name</span><span style="color: #008000"><br /></span><span style="color: #008080">73</span><span style="color: #008000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;self.h3&nbsp;</span><span style="color: #0000ff">and</span><span style="color: #000000">&nbsp;self.a:<br /></span><span style="color: #008080">74</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.names</span><span style="color: #000000">+=</span><span style="color: #000000">text<br /></span><span style="color: #008080">75</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">record&nbsp;says</span><span style="color: #008000"><br /></span><span style="color: #008080">76</span><span style="color: #008000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;self.h3&nbsp;</span><span style="color: #0000ff">and</span><span style="color: #000000">&nbsp;(self.a</span><span style="color: #000000">==</span><span style="color: #000000">False):<br /></span><span style="color: #008080">77</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">not</span><span style="color: #000000">&nbsp;text:</span><span style="color: #0000ff">pass</span><span style="color: #000000"><br /></span><span style="color: #008080">78</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">:&nbsp;self.dic.setdefault(self.names,[]).append(text)<br /></span><span style="color: #008080">79</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;<br /></span><span style="color: #008080">80</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;self.h3_and_div:<br /></span><span style="color: #008080">81</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.dic.setdefault(self.names,[]).append(text)<br /></span><span style="color: #008080">82</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">83</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;show(self):<br /></span><span style="color: #008080">84</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sys.getfilesystemencoding()<br /></span><span style="color: #008080">85</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;key&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;self.dic:<br /></span><span style="color: #008080">86</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;(&nbsp;(</span><span style="color: #800000">''</span><span style="color: #000000">.join(key)).replace(</span><span style="color: #800000">'</span><span style="color: #800000">&nbsp;</span><span style="color: #800000">'</span><span style="color: #000000">,</span><span style="color: #800000">''</span><span style="color: #000000">)).decode(</span><span style="color: #800000">'</span><span style="color: #800000">utf-8</span><span style="color: #800000">'</span><span style="color: #000000">).encode(type),&nbsp;\<br /></span><span style="color: #008080">87</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;(</span><span style="color: #800000">''</span><span style="color: #000000">.join(self.dic[key])).replace(</span><span style="color: #800000">'</span><span style="color: #800000">&nbsp;</span><span style="color: #800000">'</span><span style="color: #000000">,</span><span style="color: #800000">''</span><span style="color: #000000">)).decode(</span><span style="color: #800000">'</span><span style="color: #800000">utf-8</span><span style="color: #800000">'</span><span style="color: #000000">).encode(type)<br /></span><span style="color: #008080">88</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /></span><span style="color: #008080">89</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br /></span><span style="color: #008080">90</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /></span><span style="color: #008080">91</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /></span><span style="color: #008080">92</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />renrenspider</span><span style="color: #000000">=</span><span style="color: #000000">spider(</span><span style="color: #800000">'</span><span style="color: #800000">your&nbsp;email</span><span style="color: #800000">'</span><span style="color: #000000">,</span><span style="color: #800000">'</span><span style="color: #800000">your&nbsp;password</span><span style="color: #800000">'</span><span style="color: #000000">)<br /></span><span style="color: #008080">93</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />renrenspider.login()<br /></span><span style="color: #008080">94</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />renrenspider.feed(renrenspider.file)<br /></span><span style="color: #008080">95</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />renrenspider.show()<br /></span><span style="color: #008080">96</span><span style="color: #000000"><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span></span></div>
<p>&nbsp;</p> <img src ="http://www.cppblog.com/polly-yang/aggbug/190975.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/polly-yang/" target="_blank">polly</a> 2012-09-17 14:20 <a href="http://www.cppblog.com/polly-yang/archive/2012/09/17/190975.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>