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字符转换
Sep 06 Python
python使用beautifulsoup从爱奇艺网抓取视频播放
Jan 23 Python
Python中用函数作为返回值和实现闭包的教程
Apr 27 Python
简介Django中内置的一些中间件
Jul 24 Python
Python利用ansible分发处理任务
Aug 04 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
python调用百度REST API实现语音识别
Aug 30 Python
Python功能点实现:函数级/代码块级计时器
Jan 02 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 Python
python利用 keyboard 库记录键盘事件
Oct 16 Python
python复合条件下的字典排序
Dec 18 Python
scrapy-splash简单使用详解
Feb 21 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无限分类的类
2007/01/02 PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
2012/09/23 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
2014/08/14 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
Extjs学习笔记之一 初识Extjs之MessageBox
2010/01/07 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
react 国际化的实现代码示例
2018/09/14 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
Python之Sklearn使用入门教程
2021/02/19 Python
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
应届生个人求职信模板
2013/11/26 职场文书
公司会计岗位职责
2014/02/13 职场文书
促销活动总结模板
2014/07/01 职场文书
校友回访母校寄语
2015/02/26 职场文书
绿里奇迹观后感
2015/06/15 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript