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 错误和异常小结
Oct 09 Python
Python实现的百度站长自动URL提交小工具
Jun 27 Python
python中__slots__用法实例
Jun 04 Python
Python获取二维矩阵每列最大值的方法
Apr 03 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
May 15 Python
对python中list的拷贝与numpy的array的拷贝详解
Jan 29 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
python 调试冷知识(小结)
Nov 11 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 Python
Python人工智能之混合高斯模型运动目标检测详解分析
Nov 07 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数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
ThinkPHP入口文件设置及相关注意事项分析
2014/12/05 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
js的alert弹出框出现乱码解决方案
2013/09/02 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
2015/03/31 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
[54:57]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第二场 1月8日
2021/03/11 DOTA
浅谈Python生成器generator之next和send的运行流程(详解)
2017/05/08 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
Python2和Python3中urllib库中urlencode的使用注意事项
2018/11/26 Python
opencv与numpy的图像基本操作
2019/03/08 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
Python通过字典映射函数实现switch
2020/11/06 Python
维多利亚的秘密阿联酋官网:Victoria’s Secret阿联酋
2019/12/07 全球购物
高中毕业生自我鉴定范文
2013/09/26 职场文书
水产养殖学应届生求职信
2013/09/29 职场文书
小学生家长寄语
2014/04/02 职场文书
2015年幼儿教师个人工作总结
2015/05/20 职场文书
浅谈Python 中的复数问题
2021/05/19 Python
python实现MD5进行文件去重的示例代码
2021/07/09 Python