在Linux系统上安装Python的Scrapy框架的教程


Posted in Python onJune 11, 2015

这是一款提取网站数据的开源工具。Scrapy框架用Python开发而成,它使抓取工作又快又简单,且可扩展。我们已经在virtual box中创建一台虚拟机(VM)并且在上面安装了Ubuntu 14.04 LTS。
安装 Scrapy
Scrapy依赖于Python、开发库和pip。Python最新的版本已经在Ubuntu上预装了。因此我们在安装Scrapy之前只需安装pip和python开发库就可以了。

pip是作为python包索引器easy_install的替代品,用于安装和管理Python包。pip包的安装可见图 1。

sudo apt-get install python-pip

在Linux系统上安装Python的Scrapy框架的教程

图:1 pip安装

我们必须要用下面的命令安装python开发库。如果包没有安装那么就会在安装scrapy框架的时候报关于python.h头文件的错误。

sudo apt-get install python-dev

在Linux系统上安装Python的Scrapy框架的教程

    图:2 Python 开发库

scrapy框架既可从deb包安装也可以从源码安装。在图3中我们用pip(Python 包管理器)安装了deb包了。

sudo pip install scrapy

在Linux系统上安装Python的Scrapy框架的教程

    图:3 Scrapy 安装

图4中scrapy的成功安装需要一些时间。

在Linux系统上安装Python的Scrapy框架的教程

图:4 成功安装Scrapy框架
使用scrapy框架提取数据
基础教程

我们将用scrapy从fatwallet.com上提取商店名称(卖卡的店)。首先,我们使用下面的命令新建一个scrapy项目“store name”, 见图5。   

$sudo scrapy startproject store_name

    在Linux系统上安装Python的Scrapy框架的教程

    图:5 Scrapy框架新建项目

上面的命令在当前路径创建了一个“store_name”的目录。项目主目录下包含的文件/文件夹见图6。

  

$sudo ls ?lR store_name

   在Linux系统上安装Python的Scrapy框架的教程

    图:6 store_name项目的内容

每个文件/文件夹的概要如下:

  •     scrapy.cfg 是项目配置文件
  •     store_name/ 主目录下的另一个文件夹。 这个目录包含了项目的python代码
  •     store_name/items.py 包含了将由蜘蛛爬取的项目
  •     store_name/pipelines.py 是管道文件
  •     store_name/settings.py 是项目的配置文件
  •     store_name/spiders/, 包含了用于爬取的蜘蛛

由于我们要从fatwallet.com上如提取店名,因此我们如下修改文件(LCTT 译注:这里没说明是哪个文件,译者认为应该是 items.py)。

import scrapy
  class StoreNameItem(scrapy.Item):
    name = scrapy.Field()  # 取出卡片商店的名称

之后我们要在项目的store_name/spiders/文件夹下写一个新的蜘蛛。蜘蛛是一个python类,它包含了下面几个必须的属性:

  •     蜘蛛名 (name )
  •     爬取起点url (start_urls)
  •     包含了从响应中提取需要内容相应的正则表达式的解析方法。解析方法对爬虫而言很重要。

我们在storename/spiders/目录下创建了“storename.py”爬虫,并添加如下的代码来从fatwallet.com上提取店名。爬虫的输出写到文件(StoreName.txt)中,见图7。

from scrapy.selector import Selector
  from scrapy.spider import BaseSpider
  from scrapy.http import Request
  from scrapy.http import FormRequest
  import re
  class StoreNameItem(BaseSpider):
  name = "storename"
  allowed_domains = ["fatwallet.com"]
  start_urls = ["http://fatwallet.com/cash-back-shopping/"]
  def parse(self,response):
  output = open('StoreName.txt','w')
  resp = Selector(response)
  tags = resp.xpath('//tr[@class="storeListRow"]|\
       //tr[@class="storeListRow even"]|\
       //tr[@class="storeListRow even last"]|\
       //tr[@class="storeListRow last"]').extract()
  for i in tags:
  i = i.encode('utf-8', 'ignore').strip()
  store_name = ''
  if re.search(r"class=\"storeListStoreName\">.*?<",i,re.I|re.S):
  store_name = re.search(r"class=\"storeListStoreName\">.*?<",i,re.I|re.S).group()
  store_name = re.search(r">.*?<",store_name,re.I|re.S).group()
  store_name = re.sub(r'>',"",re.sub(r'<',"",store_name,re.I))
  store_name = re.sub(r'&',"&",re.sub(r'&',"&",store_name,re.I))
  #print store_name
  output.write(store_name+""+"\n")
  

在Linux系统上安装Python的Scrapy框架的教程

Python 相关文章推荐
Python中的文件和目录操作实现代码
Mar 13 Python
python读写文件操作示例程序
Dec 02 Python
python文件和目录操作函数小结
Jul 11 Python
python抽象基类用法实例分析
Jun 04 Python
Apache如何部署django项目
May 21 Python
Python字符串、整数、和浮点型数相互转换实例
Aug 04 Python
Python实现的各种常见分布算法示例
Dec 13 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
Feb 21 Python
python爬取微信公众号文章的方法
Feb 26 Python
Django框架视图介绍与使用详解
Jul 18 Python
openCV提取图像中的矩形区域
Jul 21 Python
Opencv常见图像格式Data Type及代码实例
Nov 02 Python
Python语言实现机器学习的K-近邻算法
Jun 11 #Python
在Linux下使用Python的matplotlib绘制数据图的教程
Jun 11 #Python
python中的代码编码格式转换问题
Jun 10 #Python
python实现数独算法实例
Jun 09 #Python
python中的全局变量用法分析
Jun 09 #Python
python简单实现计算过期时间的方法
Jun 09 #Python
Python扫描IP段查看指定端口是否开放的方法
Jun 09 #Python
You might like
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
PHP排序算法的复习和总结
2012/02/15 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
php post换行的方法
2020/02/03 PHP
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
一个手写的vue放大镜效果
2019/08/09 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
python打开url并按指定块读取网页内容的方法
2015/04/29 Python
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
Python实现TCP通信的示例代码
2019/09/09 Python
碧欧泉美国官网:Biotherm美国
2016/08/31 全球购物
美体小铺加拿大官方网站:The Body Shop加拿大
2016/10/30 全球购物
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
村官工作鉴定评语
2014/01/27 职场文书
施工安全责任书范本
2014/07/24 职场文书
特岗教师个人总结
2015/02/10 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫