Red Hat Linux下python lxml的配置安装
2010-07-30 23:22
741 查看
手头要做的事情是:从某个资讯网站抓取大量的分类资讯,用于训练一个文本分类器。需要的步骤是:1、下载索引页;2、从索引页中抽取出新闻url;3、下载新闻网页;4、对新闻网页做正文抽取。
最后一步我不用担心,手头有现成的正文抽取程序。那么对前三步而言,一种最简单有效的实现方法是用Python:(1)下载可以直接用Python标准组件urllib(http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/pythonhtml/html/html_processing/extracting_data.html);(2)在html页面中抽取url可以使用lxml(http://codespeak.net/lxml/index.html)
下面写一写lxml的安装,详细的步骤可以参考http://codespeak.net/lxml/installation.html
(1)首先lxml依赖于两个lib,libxml和libxslt,在这里(ftp://xmlsoft.org/libxml2/)分别下载。我下的都是tar.gz版本,分别configure、make、su、make install。安装完成!
(2)安装lxml可以用Python的安装工具easy_install。安装easy_install的方法很简单,先下载脚本:wget -q http://peak.telecommunity.com/dist/ez_setup.py 。然后执行python ez_setup.py,它会自动下载并安装easy_install。这个时候,敲一下easy再按下tab,就会出现easy_install了,说明已经安装成功。
(3)执行easy_install lxml,会自动下载并安装lxml,相当方便。顺便说一句,下载后的模块放在了/usr/local/lib/python2.5下的site-packages中。
(4)重启python,输入import lxml,正常执行,说明安装成功。
问题处理:
完成安装后,我在python下尝试import lxml.html时报错了,错误信息很长:
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.5/site-packages/lxml-2.2.6-py2.5-linux-x86_64.egg/lxml/html/__init__.py", line 12, in <module>
from lxml import etree
ImportError: /usr/local/lib/python2.5/site-packages/lxml-2.2.6-py2.5-linux-x86_64.egg/lxml/etree.so: symbol xmlSchematronFree, version LIBXML2_2.6.21 not defined in file libxml2.so.2 with link time reference
分析了一下,是libxml的版本不对,低于2.6.21,但是我刚刚装的明明是2.7.7版本的。打开/usr/lib64/,然后ls libxml*,却发现其中只有libxml2.so.2.6.16,奇怪了。又把其他几个目录翻了一遍,发现在/usr/local/lib下存在libxml2.so.2.7.7。猜想可能的原因是:原本系统中就装有2.6.16版本的libxml,目录是/usr/lib64,而刚才安装的2.7.7版本的默认路径在/usr/local/lib下,系统在加载libxml时优先搜索的是前者。于是,我把/usr/local/lib下的libxml*全部拷贝到/usr/lib64下,然后运行ldconfig。重启python,再import lxml.html,运行成功!
写完这篇博文很久后发现,其实直接使用easy_install就好了,不需要自己手动去装libxml和libxslt。先下载脚本:wget -q http://peak.telecommunity.com/dist/ez_setup.py 。然后执行python ez_setup.py,自动下载并安装easy_install。完成后使用easy_install lxml,自动下载并安装lxml,这个过程中它会自己安装所有依赖的包。
但是后来出现了奇怪的问题,在直接使用ez_install安装lxml的机器上,我使用lxml.html.fromstring()来parse一个html文档时,得到html element对象是不完整的,缺少很多元素。一番推敲和google后发现,问题的根源在于lxml依赖的libxml库,ez_install自动安装的libxml库存在bug,手动将libxml库更新到2.7.7后,问题解决。
最后一步我不用担心,手头有现成的正文抽取程序。那么对前三步而言,一种最简单有效的实现方法是用Python:(1)下载可以直接用Python标准组件urllib(http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/pythonhtml/html/html_processing/extracting_data.html);(2)在html页面中抽取url可以使用lxml(http://codespeak.net/lxml/index.html)
下面写一写lxml的安装,详细的步骤可以参考http://codespeak.net/lxml/installation.html
(1)首先lxml依赖于两个lib,libxml和libxslt,在这里(ftp://xmlsoft.org/libxml2/)分别下载。我下的都是tar.gz版本,分别configure、make、su、make install。安装完成!
(2)安装lxml可以用Python的安装工具easy_install。安装easy_install的方法很简单,先下载脚本:wget -q http://peak.telecommunity.com/dist/ez_setup.py 。然后执行python ez_setup.py,它会自动下载并安装easy_install。这个时候,敲一下easy再按下tab,就会出现easy_install了,说明已经安装成功。
(3)执行easy_install lxml,会自动下载并安装lxml,相当方便。顺便说一句,下载后的模块放在了/usr/local/lib/python2.5下的site-packages中。
(4)重启python,输入import lxml,正常执行,说明安装成功。
问题处理:
完成安装后,我在python下尝试import lxml.html时报错了,错误信息很长:
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.5/site-packages/lxml-2.2.6-py2.5-linux-x86_64.egg/lxml/html/__init__.py", line 12, in <module>
from lxml import etree
ImportError: /usr/local/lib/python2.5/site-packages/lxml-2.2.6-py2.5-linux-x86_64.egg/lxml/etree.so: symbol xmlSchematronFree, version LIBXML2_2.6.21 not defined in file libxml2.so.2 with link time reference
分析了一下,是libxml的版本不对,低于2.6.21,但是我刚刚装的明明是2.7.7版本的。打开/usr/lib64/,然后ls libxml*,却发现其中只有libxml2.so.2.6.16,奇怪了。又把其他几个目录翻了一遍,发现在/usr/local/lib下存在libxml2.so.2.7.7。猜想可能的原因是:原本系统中就装有2.6.16版本的libxml,目录是/usr/lib64,而刚才安装的2.7.7版本的默认路径在/usr/local/lib下,系统在加载libxml时优先搜索的是前者。于是,我把/usr/local/lib下的libxml*全部拷贝到/usr/lib64下,然后运行ldconfig。重启python,再import lxml.html,运行成功!
写完这篇博文很久后发现,其实直接使用easy_install就好了,不需要自己手动去装libxml和libxslt。先下载脚本:wget -q http://peak.telecommunity.com/dist/ez_setup.py 。然后执行python ez_setup.py,自动下载并安装easy_install。完成后使用easy_install lxml,自动下载并安装lxml,这个过程中它会自己安装所有依赖的包。
但是后来出现了奇怪的问题,在直接使用ez_install安装lxml的机器上,我使用lxml.html.fromstring()来parse一个html文档时,得到html element对象是不完整的,缺少很多元素。一番推敲和google后发现,问题的根源在于lxml依赖的libxml库,ez_install自动安装的libxml库存在bug,手动将libxml库更新到2.7.7后,问题解决。
相关文章推荐
- Red Hat Enterprise Linux 6 中yum安装配置
- red hat linux离线安装python机器学习包 这篇就够了!
- Red Hat Enterprise Linux 下cvs服务器的安装与配置
- Red Hat Linux基本知识(网络配置,安装appache,mysql,php,zend,jdk,tomcat)
- Red Hat Enterprise Linux AS release 4 配置YUM(rhel as 4 安装yum)
- Red Hat Linux下安装Python-2.7.3
- 虚拟机red hat linux下oracle9.2i的安装配置
- Red Hat Enterprise Linux Workstation release 6.2 (Santiago)系统安装配置
- Red Hat Linux,Apache2.0+Weblogic9.2负载均衡集群安装配置
- 使用VM虚拟机安装配置Red Hat Enterprise Linux6.5 64位
- Red Hat Enterprise Linux 5 (红帽子企业版5)下Samba, VSFTP配置与安装
- Red Hat Enterprise Linux 5 (红帽子企业版5)下Samba, VSFTP配置与安装
- Red Hat Enterprise Linux 5 (红帽子企业版5)下Samba, VSFTP配置与安装
- Red Hat Enterprise Linux 5 (红帽子企业版5)下Samba, VSFTP配置与安装
- 在Red Hat Linux5下构建LAMP网站服务平台之MySQL、PHP的安装与配置
- RHEL5 JDK6 安装配置及示例 (Red Hat Enterprise Linux 5)
- 红帽(Red Hat Linux)下SVN服务器的安装与配置
- 在Red Hat Linux5下构建LAMP网站服务平台之编译安装Apache与配置基于域名的虚拟Web主机
- Red Hat Enterprise Linux 4 JDK1.6+TOMCAT6安装配置文档
- VNC在Red Hat Enterprise Linux 5下的安装与配置