无论是使用爬虫框架scrapy,还是简单的requests请求后解析。都不可避免的需要使用html解析库。当然正则是可以代替一部分搜索。由于正则语法的晦涩,及其其他场景下,html解析是必不可少的。网上推荐 lxml的比较多,优点:稳定,高效。
但是lxml的安装很难一次成功。
直接成功就不要接着看了。
pip install lxml
在windows系统中安装时,可能会出现如下错误:
提示如下:
error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat). Get it from http://aka.ms/vcpython27
需要安装Microsoft Visual C++ 9.0,对应的是visual studio 2008版本。其实我们可以用一种更简单的方式来解决这个问题。
(1)首先升级下pip:
python -m pip install -U pip
(2)安装wheel
pip install wheel
(3)下载lxml对应python版本的wheel文件:下载地址(现在好像不能用了,可以根据你相应的Python去网上下载一个,这里我只有一个py37的,链接https://pan.baidu.com/s/1uGvrI12phytodE3diadxzg密码kd2h)
其中cp27表示版本就是Python2.7,最后执行安装:
lxml-xx-xx-xx .whl
文件,比如我的是lxml‑3.7.3‑cp37‑cp37m‑win_amd64.whl
pip install lxml‑3.7.3‑cp37‑cp37m‑win_amd64.whl
如果没有错误提示就代表安装成功。
下面是一些不知道的问题,可以不用看。
通常提示缺少libxml2,这是系统自带的版本太低。需要升级libxml2
ubuntu 下
apt-get install libxml2-dev libxslt-dev python-dev
centos 下
yum install libxml2-dev libxslt-dev python-dev
如果这样还不行,可以下载源代码,本地编译。
如果遇到这样的问题
error: command 'gcc' failed with exit status 1
可能是因为环境:搬瓦工的256M内存,因为内存不够,每次便宜调用gcc 就被系统干掉,而且版瓦工采用的OpenVZ架构,除非重新换机房,否则不能添加临时swap.
方法一:找一个环境相同的系统,将lxml编译成一个wheel,拷贝过去安装。
这个法不行,手头没有这样的环境。
方法二:直接粗暴的吧本地的lxml这个在site-packet文件夹下的包copy过去了。