[读书笔记]python爬虫-scrapy安装过程常见问题及解决方法

来源:互联网 发布:unity3d awake 编辑:程序博客网 时间:2024/05/29 17:06

这篇博客的来源来自《精通python网络爬虫 核心技术、框架及项目实践》作者:韦伟
众所周知,scrapy是一套比较成熟的python框架,是使用python开发的快速,高层次的信息爬取框架,可以高效率的爬去web页面并提取出我们关注的结构化数据。它的应用领域很多,比如网络爬虫开发,数据挖掘, 数据监控,自动化测试等。但是,安装scrapy的过程中,免不了会出现各种类型的错误,以下对安装过程中常出现的问题与解决办法进行了相应的汇总。

      • windows下常见问题
          • 常见问题1 pip版本需要升级
          • 常见问题2unable to find vcvarsallbat
          • 常见问题3缺少lxml
      • linuxcentos安装scrapy常见问题
          • 常见问题1安装scrapy的时候出现bz2 module is not available
          • 常见问题2安装scrapy时出现致命错误libxmlxmlversionh 没有那个文件或目录
          • 常见问题3安装scrapy时出现Requirement already satisfied
          • 常见问题4安装scrapy时出现致命错误 libxsltxsltconfigh 没有那个文件或目录
          • 常见问题5安装scrapy后无法使用scrapy指令

windows下常见问题

常见问题1: pip版本需要升级

如果你的pip版本较老,可以通过python -m pip install --upgrade pip来解决这个问题,完成升级后,这一类错误即可解决。

常见问题2:unable to find vcvarsall.bat

在安装过程中,有可能会出现“unable to find vcvarsall.bat”等错误提示,如果出现这个错误,可以安装对应的Visual Studio解决。
打开python安装目录下的“Lib/distutils/msvc9compiler.py”文件,打开该文件后,可以看到类似如下的代码
vc_env = query_vcvarsall(VERSION, plat_spec)
如果安装的是Visual Studio 2015的版本,可以将这行代码改为:
vc_env = query_vcvarsall(14.0, plat_spec)
可以看到,参数VERSION和安装的Visual Studio 的版本是有对应关系的,具体的对应关系如下:

Visual Studio版本 对应的VERSION参数值 Visual Studio 2008 9.0 Visual Studio 2010 10.0 Visual Studio 2012 11.0 Visual Studio 2013 12.0 Visual Studio 2014 13.0 Visual Studio 2015 14.0

设置好参数后,可以通过下载对应的 Visual Studio 版本进行安装,,2015专业版的官方下载地址是:
https://www.visualstudio.com/zh-hans/downloads/?rr=https%3A%2%2Fzhidao.baidu.com%2Fquestion%2F585329796764288885.html
下载之后进行解压并进行安装。安装Visual Studio,需要对应版本的.NET Framework 的支持,如果没有安装对应版本的.NET Framework,可能会出现如图所示的错误界面:
这里写图片描述
如果出现该错误界面,可以根据错误提示信息,下载对应的Microsoft B NET Framework安装即可解决该错误。
安装好Visual Studio后,再使用pip安装Scrapy就不会出现该错误了。

常见问题3:缺少lxml

有时候,会出现缺少lxml的错误,解决该问题需要安装对应的lxml,可以先下载lxml的whl格式的文件,然后使用pip进行安装。
首先从LFD中下载对应版本的lxml。
首先打开以下网址:http://www.lfd.uci.edu/~gohlke/pythonlibs/
找到对应版本下载。下载之后,进入cmd命令行。
然后可以先使用pip安装好wheel:
pip install wheel

如果未安装wheel,使用该命令可以直接安装wheel。
然后,进入下载的whl文件所在的目录,使用“pip install whl文件名”安装对应的whl文件。
安装完成lxml之后,该问题即可解决。

linux(centos)安装scrapy常见问题

常见问题1:安装scrapy的时候出现bz2 module is not available

问题描述:
在安装scrapy时,可能会出现类似如下的问题:
File “/usr/local/python3/lib/python3.4/tarfile.py”, line 1566, in open return func(name, filemode, fileobj, **kwargs)
File “/usr/local/python3/lib/python3.4/tarfile.py”, line 1643, in bz2open raise CompressionError(“bz2 module is not available”)
tarfile.CompressionError: bz2 module is not available

Storing debug log for failure in root/.pip/pip.log
解决办法:
出现这个问题,可以通过安装Twisted解决。
首先下载Twisted:
输入如下命令:
[root@localhost /]# wget https://pypi.python.org/packages/source/T/Twisted/Twisted-14.0.0.tar.bz2
下载之后,进行解压与安装,输入如下命令:
[root@localhost Twisted-14.0.0]# cd Twisted-14.0.0/
[root@localhost Twisted-14.0.0]# python setup.py install

安装完成会出现如下信息:
Using /usr/local/python3/lib/python3.4/site-packages
Finished processing dependencies for Twisted==14.0.0

此时,成功解决该问题。

常见问题2:安装scrapy时出现致命错误:libxml/xmlversion.h: 没有那个文件或目录

问题描述:
使用pip3安装scrapy时,可能会出现如下错误:
gcc -pthread -Wno-unused-result -DNDEBUG -g - fwrapv -o3 -Wall -Wstrict-prototypes - fPIC -Isrc/lxml/includes -I/usr/local/python3/include/python3/python3.4m -c src/lxml/lxml,etree.c -o build/temp.linux-x86_64-3.4/src/lxml/lxml.etree.o -w

In file included from src/lxml/lxml.etree.c:321:0:

src/lxml/includes/etree_defs.h:14:31: 致命错误: libxml/xmlversion.h: 没有那个文件或目录

#include “libxml/xmlversion.h”

编译中断

Compile failed: command ‘gcc’ failed with exit status 1
creating tmp
cc -I/usr/include/ lixml2 -c /tem/xmlXPATHInit8f4a5ufs.c -o tmp/xmlXPATHInit8f4a5ufs.o
/tmp/xmlXPATHInit8f4a5ufs.c:1:26: 致命错误: libxml/xpath.h: 没有那个文件或目录

#include “libxml/xpath.h”
^
编译中断。
error: command ‘gcc’ failed with exit status 1
*************************************************************
Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?

*************************************************************

——————————————————————————————–
解决办法:
若出现该错误,可以分两步解决:先安装libxml2-devel。再为libxml建立软链接,具体如下:
[root@localhost /]# yum - y install libxml2-devel
[root@localhost /]# ln -fs /usr/include/libxml2/libxml/ /usr/include/libxml

常见问题3:安装scrapy时出现Requirement already satisfied

解决办法
此时,无法重新执行pip3 installl scrapy,可以先将未完全安装的scrapy拆卸,再重新执行pip install scrapy,具体过程如下:
[root@localhost /]# pip uninstall scrapy
[root@localhost /]# pip install scrapy

常见问题4:安装scrapy时出现:致命错误: libxslt/xsltconfig.h: 没有那个文件或目录

解决办法
此时,没有libxslt/xsltconfig.h,导致错误的原因是缺少 libxslt-devel, 所以此时我们只需要通过yum安装libxslt-devel即可解决问题,具体如下:
[root@localhost /]# yum -y install libxslt -devel
执行完成后该问题即可解决。

常见问题5:安装scrapy后无法使用scrapy指令

安装好scrapy后却而无法使用scrapy指令。
解决办法
遇到这种情况,可以逐步调试解决。
首先,我们无法执行scrapy指令,说明此时/usr/bin/目录下没有scrapy,所以需要为scrapy建立软链。首先需要先找出scrapy所在地址,如下所示:
[root@localhost ~]# find / -name "\*scrapy*"
find: '/run/user/1000/gvfs' : 权限不够
/esr/local/python3/bin/scrapy
/usr/local/python3/lib/python3.4/site-packages/scrapy
/usr/local/python3/lib/python3.4/site-packages/scrapy/templates/project/scrapy.cfg

可以看到。/usr/local/python3/bin/scrapy路径即是我们要找的路径,此时scrapy在/usr/local/python3/bin/目录下,而不是在/esr/bin/目录下,故而我们直接输入scrapy无法执行对应指令,所以此时为此路径下的scrapy建立软链,如下所示:
[root@localhost ~]# ln -fs /usr/local/python3/bin/scrapy /usr/bin/scrapy
然后就可以执行scrapy指令了。
但此时我们执行scrapy指令,会出现”ImportError : No Module named ’ twisted.persisted’的问题。此时twisted模块有问题,而之前已经安装过该模块,所以此时可以尝试升级该模块,如下所示:
[root@localhost ~]# pip3 install twisted --upgrade
但此时又显示缺少_bz2模块,此时可以安装bzip2-devel以及bzip2*,如下所示:
{root@localhost ~]#yum -y install bzip2-devel bzip2*
安装好之后,需要重新编译与安装python,进入python3的安装目录,然后执行make和make install。
然后再升级twisted即可成功运行。
随后再次执行scrapy,会发现此时缺少cryptography,安装pycrypto、cryptography即可,执行如下命令:
[root@localhost Python3.4.2]# yum -y install gcc libffi-devel python -devel python-devel openssl-devel
[root@localhost Python-3.4.2]# yum -y install pycrypto
[root@localhost Python-3.4.2]# pip3 install cryptography
[root@localhost Python-3.4.2]# pip3 install pycrypto
问题解决。