pycharm创建scrapy项目教程及遇到的坑解析


Posted in Python onAugust 15, 2019

前言

最近学习scrapy爬虫框架,在使用pycharm安装scrapy类库及创建scrapy项目时花费了好长的时间,遇到各种坑,根据网上的各种教程,花费了一晚上的时间,终于成功,其中也踩了一些坑,现在整理下相关教程,希望帮助那些遇到和我一样问题的码农。

1、环境

  • 操作系统:windows10。
  • python版本:python3.7,必须使用Anaconda,目前是Anaconda5.3.1。下载地址:https://www.anaconda.com/download/ 下载64位的安装包。scrapy依赖的类库比较多,使用Anaconda会将相关的依赖的类库都安装好,并且版本保持一致。
  • pycharm:pycharm2018。

2、安装Anaconda

安装好Anaconda之后,将下面的变量加入到系统环境变量中:

e:\Anaconda3;e:\Anaconda3\Library\mingw-w64\bin;e:\Anaconda3\Library\usr\bin;e:\Anaconda3\Library\bin;e:\Anaconda3\Scripts;

上面是我本机上的环境变量,我是将Anaconda3安装在E盘的Anaconda3文件夹中。

3、安装scrapy相关类库

打开pycharm,创建一个项目,然后开始安装相关的类库。通过下面的方式查找类库,点击左上角的File按钮,会弹出如下的界面:

pycharm创建scrapy项目教程及遇到的坑解析

点击Settings按钮,会弹出下面的菜单:

pycharm创建scrapy项目教程及遇到的坑解析

然后点击右边的“+”,就会弹出安装类库的界面:

pycharm创建scrapy项目教程及遇到的坑解析

在上图中查询类库,然后点击“Install package”即可安装。
如果查询出的类库显示蓝色,表示这个类库已经安装过了。

按照下面的顺序安装类库:lxml->zope.interface->pyopenssl->twisted->scrapy。一般情况下Anaconda已经安装了很多类库,我们只需安装scrapy即可。

4、创建scrapy项目

安装好scrapy类库之后,就可以创建scrapy项目了,pycharm不能直接创建scrapy项目,必须通过命令行创建,打开pycharm的Terminal终端,输入scrapy startproject test_scrapy命令,就可以创建名为test_scrapy的scrapy项目,看到如下的信息表示成功创建scrapy项目:

New Scrapy project 'test_scrapy', using template directory 'e:\\Anaconda3\\lib\\site-packages\\scrapy\\templates\\project', created in:
  G:\PycharmProjects\scrapy\test_scrapy

You can start your first spider with:
  cd test_scrapy
  scrapy genspider example example.com

然后在pycharm的项目空间中就可以看到test_scrapy项目的目录结构:

pycharm创建scrapy项目教程及遇到的坑解析

通过命令行创建scrapy项目时经常会遇到下面的三个坑:

(1)'scrapy' 不是内部或外部命令,也不是可运行的程序或批处理文件。这是因为没有把Anaconda加入到环境变量中。在安装scrapy时,会将scrapy.exe文件安装到Scripts文件夹下面:

pycharm创建scrapy项目教程及遇到的坑解析

如果没有设置环境变量,将无法找到scrapy.exe文件。

(2)ImportError: DLL load failed: 找不到指定的模块。 这个问题是因为lxml类库版本引起的,在window7操作系统会遇到这个问题。我安装的是4.2.5版本,后来改成3.8.0就解决了。将lxml从4.2.5切换成3.8.0的方法如下:

pycharm创建scrapy项目教程及遇到的坑解析

通过上图的安装类库界面,找到lxml,勾选上Specify version选项,然后选择3.8.0,点击“install package”按钮即可。使用anaconda的好处就是,将lxml切换成3.8.0之后,会把相关的openssl和twisted等类库也切换成匹配的类库,因此强烈推荐使用Anaconda安装python。

(3)ImportError: DLL load failed: 操作系统无法运行 %1 。 这个是因为c:/windows/system32目录中的ssleay32.dll和libeay32.dll冲突导致的,我的做法是删除掉这个两个文件,创建好scrapy项目后,在恢复回来。因为删除这两个文件会导致某些应用无法运行。在window10操作系统会遇到这个问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python设计模式之观察者模式实例
Apr 26 Python
Python中线程编程之threading模块的使用详解
Jun 23 Python
python 捕获 shell/bash 脚本的输出结果实例
Jan 04 Python
Python连接数据库学习之DB-API详解
Feb 07 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
Python3.6简单的操作Mysql数据库的三个实例
Oct 17 Python
PyTorch基本数据类型(一)
May 22 Python
python web框架 django wsgi原理解析
Aug 20 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
Python基础教程(一)——Windows搭建开发Python开发环境
Jul 20 Python
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Jun 08 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
Aug 15 #Python
Python依赖包整体迁移方法详解
Aug 15 #Python
使用python批量修改文件名的方法(视频合并时)
Mar 24 #Python
python 修改本地网络配置的方法
Aug 14 #Python
python django 原生sql 获取数据的例子
Aug 14 #Python
django 连接数据库 sqlite的例子
Aug 14 #Python
Python将主机名转换为IP地址的方法
Aug 14 #Python
You might like
如何在PHP中使用Oracle数据库(4)
2006/10/09 PHP
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
javascript GUID生成器实现代码
2009/10/31 Javascript
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
Python线程创建和终止实例代码
2018/01/20 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
Python如何定义接口和抽象类
2020/07/28 Python
python 进程池pool使用详解
2020/10/15 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
Beauty Expert美国/加拿大:购买奢侈美容产品
2018/12/05 全球购物
SQL Server数据库笔试题和答案
2016/02/04 面试题
初级Java程序员面试题
2016/03/03 面试题
成人继续教育实施方案
2014/03/01 职场文书
授权委托书格式
2014/07/31 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
公司职员入党自传书
2015/06/26 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书