Python爬虫框架Scrapy安装使用步骤


Posted in Python onApril 01, 2014

一、爬虫框架Scarpy简介
Scrapy 是一个快速的高层次的屏幕抓取和网页爬虫框架,爬取网站,从网站页面得到结构化的数据,它有着广泛的用途,从数据挖掘到监测和自动测试,Scrapy完全用Python实现,完全开源,代码托管在Github上,可运行在Linux,Windows,Mac和BSD平台上,基于Twisted的异步网络库来处理网络通讯,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片。

二、Scrapy安装指南

我们的安装步骤假设你已经安装一下内容:<1>Python2.7<2>lxml<3>OpenSSL,我们使用Python的包管理工具pip或者easy_install来安装Scrapy。
pip的安装方式:

pip install Scrapy

easy_install的安装方式:
easy_install Scrapy

三、Ubuntu平台上环境配置

1、python的包管理工具
当前的包管理工具链是 easy_install/pip + distribute/setuptools
distutils : Python 自带的基本安装工具, 适用于非常简单的应用场景;
setuptools : 针对 distutils 做了大量扩展, 尤其是加入了包依赖机制. 在部分 Python 子社区已然是事实上的标准;
distribute : 由于 setuptools 开发进度缓慢, 不支持 Python 3, 代码混乱, 一帮程序员另起炉灶, 重构代码, 增加功能, 希望能够取代 setuptools 并被接纳为官方标准库, 他们非常努力, 在很短的时间便让社区接受了 distribute;,setuptools / distribute 都只是扩展了 distutils;
easy_install : setuptools 和 distribute 自带的安装脚本, 也就是一旦 setuptools 或 distribute 安装完毕, easy_install 也便可用. 最大的特点是自动查找 Python 官方维护的包源 PyPI , 安装第三方 Python 包非常方便; 使用:
pip : pip 的目标非常明确 ? 取代 easy_install. easy_install 有很多不足: 安装事务是非原子操作, 只支持 svn, 没有提供卸载命令, 安装一系列包时需要写脚本; pip 解决了以上问题, 已俨然成为新的事实标准, virtualenv 与它已经成为一对好搭档;

安装过程:
安装distribute  

$ curl -O http://python-distribute.org/distribute_setup.py  
$ python distribute_setup.py

安装pip:
$ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py  
$ [sudo] python get-pip.py

2、Scrapy的安装
在Windows平台上,可以通过包管理工具或者手动下载各种依赖的二进制包:pywin32,Twisted,zope.interface,lxml,pyOpenSSL,在Ubuntu9.10以后的版本上,官方推荐不用使用Ubuntu提供的python-scrapy包,它们要么太老要么太慢,无法匹配最新的Scrapy,解决方案是,使用官方的Ubuntu Packages,它提供了所有的依赖库,并且对于最新的bug提供持续的更新,稳定性更高,它们持续的从Github仓库(master和stable branches)构建,Scrapy在Ubuntu9.10之后的版本上的安装方法如下:
<1>输入GPG密钥

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 627220E7

<2>创建/etc/apt/sources.list.d/scrapy.list 文件
echo 'deb http://archive.scrapy.org/ubuntu scrapy main' | sudo tee /etc/apt/sources.list.d/scrapy.list

<3>更新包列表,安装scrapy版本,其中VERSION用实际的版本代替,如scrapy-0.22
sudo apt-get update && sudo apt-get install scrapy-VERSION

3、Scrapy依赖库的安装
ubuntu12.04下scrapy依赖库的安装
ImportError: No module named w3lib.http

pip install w3lib

ImportError: No module named twisted
pip install twisted

ImportError: No module named lxml.html
pip install lxml

解决:error: libxml/xmlversion.h: No such file or directory
apt-get install libxml2-dev libxslt-dev  
apt-get install python-lxml

解决:ImportError: No module named cssselect
pip install cssselect 

ImportError: No module named OpenSSL
pip install pyOpenSSL 

4、定制自己的爬虫开发
切换到文件目录,开启新的工程

scrapy startproject test

 

Python 相关文章推荐
在Python的while循环中使用else以及循环嵌套的用法
Oct 14 Python
Python正则表达式实现截取成对括号的方法
Jan 06 Python
详解python 拆包可迭代数据如tuple, list
Dec 29 Python
tensorflow实现加载mnist数据集
Sep 08 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
Python元组常见操作示例
Feb 19 Python
python视频按帧截取图片工具
Jul 23 Python
开启Django博客的RSS功能的实现方法
Feb 17 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
Mar 06 Python
python用opencv完成图像分割并进行目标物的提取
May 25 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
May 27 Python
python爬取招聘要求等信息实例
Nov 20 Python
使用python绘制人人网好友关系图示例
Apr 01 #Python
python异步任务队列示例
Apr 01 #Python
用Python编程实现语音控制电脑
Apr 01 #Python
35个Python编程小技巧
Apr 01 #Python
ptyhon实现sitemap生成示例
Mar 30 #Python
python实现百度关键词排名查询
Mar 30 #Python
python获取网页状态码示例
Mar 30 #Python
You might like
PHP类的使用 实例代码讲解
2009/12/28 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
分享下php5类中三种数据类型的区别
2015/01/26 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
一个javascript参数的小问题
2008/03/02 Javascript
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
javascript中clone对象详解
2014/12/03 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
vuex 的简单使用
2018/03/22 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
Python语法快速入门指南
2015/10/12 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
python获取中文字符串长度的方法
2018/11/14 Python
python中 * 的用法详解
2019/07/10 Python
wxPython实现文本框基础组件
2019/11/18 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
介绍一下常见的木马种类
2014/11/15 面试题
物资采购管理制度
2015/08/06 职场文书
关于感恩的作文
2019/08/26 职场文书
导游词之井冈山
2019/11/20 职场文书
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA