Python2.7下安装Scrapy框架步骤教程
由于毕业设计的要求,需要在网站上抓取大量的数据,那么使用Scrapy框架可以让这一过程变得简单不少,毕竟Scrapy是一个为了爬去网站数据、提取结构性数据而编写的应用框架。于是,便开始了我的安装Scrapy框架之旅。可以说这个过程并不是很愉快,各种错误各种出,不过到最后,终于安装上了Scrapy框架。下面总结一下我的Scrapy框架的安装。
1.安装python2.7
由于Scrapy不支持Python3.0,于是我卸载了Python3.0,又重新安装了Python2.7(python2.7安装包),在安装Python2.7的时候,会有一个自动设置环境变量的选项,建议在这里将选项选上,省下后期自己添加环境变量。我们后期自己添加环境变量,就是根据自己实际安装的路径,在系统的环境变量path中添加这两条语句就可以。
在配置完环境之后,我们测试一下我们是否安装配置环境成功。只要在cmd中输入 python ?version ,然后能够显示正确的python版本就可以了。如果未能显示,则重启一下cmd试试。
2.安装pywin32
在安装配置好python2.7之后,我们还不能直接安装Scrapy,我们首先需要安装Scrapy依赖的几个工具。接下来安装pywin32(pywin32安装包),这个软件安装的时候一直next就可以了。
3.安装pip
pip实际上一款比较方便的在线软件安装工具,类似于easy install,我们现在安装pip,在之后的软件安装的时候我们就可以使用 pip install 命令了。首先我们要下载get-pip.py(get-pip.py文件) ,下载完成之后,我们在cmd下进行安装,首先切换到文件所在目录,然后输入python get-pip.py语句,便可以进行安装了,但是最头疼的问题出现了,由于该文件会将一些配置文件自动写入到我们的C盘用户文件目录下,而我的用户目录是中文名,就会产生编码异常。
在查找一番资料之后,终于将问题解决了,为了解决中文路径的问题,我们只需要在 D:\python27\Lib\site-packages的目录下新建一个名为
sitecustomize.py的文件即可。
然后在文件内输入以下代码:
import sys reload(sys) sys.setdefaultencoding('gbk')
当然不一定一定要设置为gbk编码,这个根据自己的电脑的编码来设置。这样我们的中文路径问题就算解决了,我们在重启cmd,在执行安装pip语句之后,pip便顺利完成了。安装完成之后,我们可以进行一下检验,在cmd中输入pip ?version,如果显示正确的版本号则说明正确。
4.安装lxml
在安装完成pip之后,本想可以轻松的使用pip install lxml命令来进行安装,但是意外发生了,由于使用pip需要vc2008的环境,而且只能是2008的,2013的都不行。没办法为了使用这款工具,只能在去求教度娘,终于找到了解决办法,原来微软给我们提供了VcForPython(VCForPython安装包),这样我们就不用安装VC2008了,这样之后,我们便可以使用 pip install lxml进行安装了。
5.安装pyOpenSSL
在安装这个工具的时候我们便可以使用 pip install pyOpenSSL 语句来进行安装了,安装的速度取决于网速了。
6.安装Scrapy
终于经历一波坎坷之后,我们终于可以安装Scrapy框架了,在cmd中输入 pip install Scrapy命令之后,我们就可以等着享受成功的喜悦了。在安装完成之后,我们在cmd中输入Scrapy来检测一下,是否真正的安装成功。
终于安装好了,还是有点成就感的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- 从编程实现角度学习 Faster R-CNN(附极简实现)
- Java基础-23(02)总结多线程,线程实现Runnable接口,线程名字获取和设置,线程控制,线程安全,同步线程
- 8 个最好的 Java RESTful 框架
- 【C++基础】C++11 lambda 表达式解析
- 大量redo生成的问题原因及改进(r6笔记第50天)
- Java基础-22总结登录注册IO版,数据操作流,内存操作流,打印流,标准输入输出流,
- YOLO,一种简易快捷的目标检测算法
- Java基础-22总结转换流,随机访问流,合并流,序列化流,Properties
- openshift镜像构建
- 关于数据库无法登录的问题反思(r6笔记第49天)
- SQL中distinct的用法
- 数据结构是哈希表(hashTable)(一)
- 关于奇怪的并行进程分析(三)(r6笔记第47天)
- 数据结构是哈希表(hashTable)(二)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ffmpeg转换多媒体文件,真香
- 静态库与动态库的那些事
- 云服务器网络延迟与丢包问题定位(mtr工具)
- Spark UDF1 输入复杂结构
- Qt音视频开发6-ffmpeg解码处理
- MySQL 百万级数据量分页查询方法及其优化
- 教你设计一个超牛逼的本地缓存!
- Flutter延时任务、Flutter通过Future与Timer实现延时任务
- DDIA 笔记
- 工作流和状态机
- CentOS 6.x 搭建:Headless Chrome + ChromeDriver + Selenium的爬虫环境系统
- 聊聊dubbo-go的registryAwareCluster
- 同样是空值,null和undefined有什么异同?
- 强大到没朋友的mysql-shell及插件
- android JavaPoet记录