Scrapy爬虫框架第一讲(Linux环境)
1、What is Scrapy?

答:Scrapy是一个使用python语言(基于Twistec框架)编写的开源网络爬虫框架,其结构清晰、模块之间的耦合程度低,具有较强的扩张性,能满足各种需求。(前面我们介绍了使用requests、beautifulsoup、selenium等相当于你写作文题,主要针对的是个人爬虫;而Scrapy框架的出现给了我们一个方便灵活爬虫程序架构,我们只需针对其中的组件做更改,即可实现一个完美的网络爬虫,相当于你做填空题!)
基于Scrapy的使用方便性,下面所有的Scrapy程序我们都会在Linux系统下运行
2、Scrapy框架的安装(这里我使用的是vmware虚拟机+ubuntu16.04镜像环境)
打开终端:sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev(安装一些依赖包)
如果你没安装python3请执行:sudo apt-get install python3 python3-dev
这里小伙伴们可以先创建一个虚拟环境:pip3 install virtualenv 再进行scrapy 的安装(之后你写的所有程序都会在虚拟环境中运行)
基于我使用的是ubuntu16.04版本,系统自带了python2.7.14 和python3.5.2两个版本
下面小伙们让我们先来解决一个多版本的共存问题吧
当你输入python时系统会自动指向python2,而我们的所有程序是基于python3 的,这也是以后的主流。(我们要的是输入python,系统直接链接到python3)

下面我们来解决这个问题:sudo su (输入你设置等待用户密码进入超级用户权限)---接着请看图:


分析:(linux命令小伙伴们我们以后再谈)
当我们键入python2 系统自动指向python2环境,python3同样如此
whereis python 找出了python的所有可执行文件的路径
which python 找出了当我们键入python时执行的文件路径
我们使用rm 首先删除了该路径,接着使用 ln -s 参数1 参数2 (将参数1 指向 参数2 这里相当于生成了软链接原理和超链接一样,当你键入python时系统自动指向了软连接 python3的可执行文件的路径并执行文件),这样我们成功的达到了预想目的
3、如何解决同时使用多个python版本和同时使用多个库版本的问题
答:安装virtualenv虚拟环境
打开终端:sudo pip3 install virtualenv
如果出现以下错误请使用 vi /usr/bin/pip3 更改配置文件(这是因为原来我们是python2的pip当你升级后系统没改配置文件,小伙伴们不要紧张,我们自己修改即可)

这里涉及到linux下强大的文本编辑器vim的使用我们下次专门讲解
更改配置文件如下:

再次键入:sudo pip3 install virtualenv (成功)
接着:

创建名叫course-python3.5-env 的python3.5虚拟环境:如上图
激活与推出虚拟环境 source 与 deactivate 命令

最后我们按照前述,首先激活虚拟环境,然后安装Scrapy即可
验证:终端键入:scrapy --version查看安装的scapy版本,不报错即可!
以后我们所有的scrapy爬虫项目都在虚拟环境下运行了!
Scrapy爬虫框架第一讲(Linux环境)的更多相关文章
- 手把手教你如何新建scrapy爬虫框架的第一个项目(上)
前几天给大家分享了如何在Windows下创建网络爬虫虚拟环境及如何安装Scrapy,还有Scrapy安装过程中常见的问题总结及其对应的解决方法,感兴趣的小伙伴可以戳链接进去查看.关于Scrapy的介绍 ...
- Python之Scrapy爬虫框架安装及简单使用
题记:早已听闻python爬虫框架的大名.近些天学习了下其中的Scrapy爬虫框架,将自己理解的跟大家分享.有表述不当之处,望大神们斧正. 一.初窥Scrapy Scrapy是一个为了爬取网站数据,提 ...
- scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250
scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ...
- Python爬虫教程-31-创建 Scrapy 爬虫框架项目
本篇是介绍在 Anaconda 环境下,创建 Scrapy 爬虫框架项目的步骤,且介绍比较详细 Python爬虫教程-31-创建 Scrapy 爬虫框架项目 首先说一下,本篇是在 Anaconda 环 ...
- Python-S9-Day126——Scrapy爬虫框架
01 今日内容概要 02 内容回顾和补充:scrapy 03 内容回顾和补充:网络和并发编程 04 Scrapy爬虫框架:pipeline做持久化(一) 05 Scrapy爬虫框架:pipeline做 ...
- scrapy爬虫框架教程(二)-- 爬取豆瓣电影
前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大家讲解一个完整爬虫的流程. 工具和环境 语言:python 2 ...
- Scrapy爬虫框架(实战篇)【Scrapy框架对接Splash抓取javaScript动态渲染页面】
(1).前言 动态页面:HTML文档中的部分是由客户端运行JS脚本生成的,即服务器生成部分HTML文档内容,其余的再由客户端生成 静态页面:整个HTML文档是在服务器端生成的,即服务器生成好了,再发送 ...
- python3.7.1安装Scrapy爬虫框架
python3.7.1安装Scrapy爬虫框架 环境:win7(64位), Python3.7.1(64位) 一.安装pyhthon 详见Python环境搭建:http://www.runoob.co ...
- 安装scrapy 爬虫框架
安装scrapy 爬虫框架 个人根据学习需要,在Windows搭建scrapy爬虫框架,搭建过程种遇到个别问题,共享出来作为记录. 1.安装python 2.7 1.1下载 下载地址 1.2配置环境变 ...
随机推荐
- FT5X06 如何应用在10寸电容屏(linux-3.5电容屏驱动简析&移植10寸电容屏驱动到Android4.2) (by liukun321咕唧咕唧)
这是几个月以前的东西了,在彻底遗忘之前拿出来好好写写.做个笔记,也算是造福后来人了.在做这个项目之前,没有做过电容屏的驱动,印象中的电容触摸屏是不需要校正的.IC支持多大的屏就要配多大的屏.但是拿到需 ...
- 《java入门第一季》之面向对象(面向对象案例详解)
通过几个小案例理重新回顾一下前面所写的内容,对面向对象的理解更加深刻的目的: 案例一: /* 需求: 定义一个员工类,自己分析出几个成员, 然后给出成员变量,构造方法,getXxx()/setXxx( ...
- Oracle E-Business Suite Maintenance Guide Release 12.2(Patching Utilities)
更多内容参考: http://docs.oracle.com/cd/E51111_01/current/acrobat/122ebsmt.zip Oracle Patch Application As ...
- 一个清除Xcode项目占用大量空间的脚本
如果将Xcode项目的Derived Data保留在每个项目的相对路径里的话,久而久之该文件夹里会占用大量的空间,多达百兆计算. 其中DerivedData中很多文件是Xcode项目编译和执行的缓存, ...
- Mybatis 源码之Plugin类解析
public class Plugin implements InvocationHandler { private Object target; //目标对象 private Interceptor ...
- 开源项目AndroidReview学习小结(2)
读书破万卷下笔如有神 作为入门级的android码农的我,还是需要多多研读开源代码 下面继续接着上一篇的分析,这一篇主要介绍第一个tab,ReviewFragment的分析,界面看起来简单,背后的逻辑 ...
- linux下64位汇编的系统调用(1)
现在基本上系统都是64位了,而64位系统下的汇编和32位有了较大的变化,无论是系统调用的接口还是C标准库的接口都和32位汇编有所不同:下面简单谈一下在64位linux下如何利用汇编直接调用系统调用. ...
- ES6之let命令
ES6新增了let命令,用来声明变量.它的用法类似于var. let和var声明变量的区别: 1.let声明的变量,只在let命令所在的代码块内有效,出了这个块级作用域就不起作用 先看一个例子: { ...
- python下实现二叉堆以及堆排序
python下实现二叉堆以及堆排序 堆是一种特殊的树形结构, 堆中的数据存储满足一定的堆序.堆排序是一种选择排序, 其算法复杂度, 时间复杂度相对于其他的排序算法都有很大的优势. 堆分为大头堆和小头堆 ...
- Java IO学习--(三)通道
Java IO中的管道为运行在同一个JVM中的两个线程提供了通信的能力.所以管道也可以作为数据源以及目标媒介. 你不能利用管道与不同的JVM中的线程通信(不同的进程).在概念上,Java的管道不同于U ...