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发送邮件接收邮件示例分享
Jan 21 Python
分享python数据统计的一些小技巧
Jul 21 Python
Python实现ssh批量登录并执行命令
Oct 25 Python
Python实现mysql数据库更新表数据接口的功能
Nov 19 Python
基于numpy.random.randn()与rand()的区别详解
Apr 17 Python
Python装饰器原理与用法分析
Apr 30 Python
Python求解任意闭区间的所有素数
Jun 10 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 Python
flask框架渲染Jinja模板与传入模板变量操作详解
Jan 25 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
面向新手解析python Beautiful Soup基本用法
Jul 11 Python
Pycharm Git 设置方法
Sep 15 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/06/20 PHP
PHP对象Object的概念 介绍
2012/06/14 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
表单提交前触发函数返回true表单才会提交
2014/03/11 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
Python的print用法示例
2014/02/11 Python
Python获取邮件地址的方法
2015/07/10 Python
简单理解Python中的装饰器
2015/07/31 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
基于python实现操作git过程代码解析
2020/07/27 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
自荐书封面下载
2013/11/29 职场文书
产品促销活动策划书
2014/01/15 职场文书
2014年端午节活动方案
2014/03/11 职场文书
狂人日记读书笔记
2015/06/30 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
2015年城管执法工作总结
2015/07/23 职场文书