如何在Ubuntu 14.04 LTS安装网络爬虫工具:Scrapy

如何在Ubuntu 14.04 LTS安装网络爬虫工具:Scrapy

这是一款提取网站数据的开源工具。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。


  1. sudo apt-get install python-pip

图:1 pip安装

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


  1. sudo apt-get install python-dev

图:2 Python 开发库

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


  1. sudo pip install scrapy

图:3 Scrapy 安装

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

图:4 成功安装Scrapy框架

使用scrapy框架提取数据

基础教程

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


  1. $sudo scrapy startproject store_name

图:5 Scrapy框架新建项目

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


  1. $sudo ls –lR store_name

图: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)。


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

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

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

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


  1. from scrapy.selector import Selector
  2. from scrapy.spider import BaseSpider
  3. from scrapy.http import Request
  4. from scrapy.http import FormRequest
  5. import re
  6. class StoreNameItem(BaseSpider):
  7. name = "storename"
  8. allowed_domains = ["fatwallet.com"]
  9. start_urls = ["http://fatwallet.com/cash-back-shopping/"]
  10. def parse(self,response):
  11. output = open('StoreName.txt','w')
  12. resp = Selector(response)
  13. tags = resp.xpath('//tr[@class="storeListRow"]|\
  14. //tr[@class="storeListRow even"]|\
  15. //tr[@class="storeListRow even last"]|\
  16. //tr[@class="storeListRow last"]').extract()
  17. for i in tags:
  18. i = i.encode('utf-8', 'ignore').strip()
  19. store_name = ''
  20. if re.search(r"class=\"storeListStoreName\">.*?<",i,re.I|re.S):
  21. store_name = re.search(r"class=\"storeListStoreName\">.*?<",i,re.I|re.S).group()
  22. store_name = re.search(r">.*?<",store_name,re.I|re.S).group()
  23. store_name = re.sub(r'>',"",re.sub(r'<',"",store_name,re.I))
  24. store_name = re.sub(r'&amp;',"&",re.sub(r'&amp;',"&",store_name,re.I))
  25. #print store_name
  26. output.write(store_name+""+"\n")

图:7 爬虫的输出

注意: 本教程的目的仅用于理解scrapy框架

----------------------------------------------------------------------------------------------------------------------------

原文发布时间:2015-03-21
本文来自云栖合作伙伴“linux中国”
时间: 2024-08-03 08:23:27

如何在Ubuntu 14.04 LTS安装网络爬虫工具:Scrapy的相关文章

如何在Ubuntu 14.04 LTS上安装MariaDB

如何在Ubuntu 14.04 LTS上安装MariaDB MariaDB是一个开源数据库且100%与MySQL兼容,目标是替代MySQL数据库. MariaDB的背景 : 2008年,MySQL被后来被Oracle在2010年收购的Sun Microsystems收购了. 最初被Sun公司的收购由于符合项目的需要而受到MySQL社区的欢呼,但是这种情绪并没有持续太久,接下来被Oracle的收购,不幸期望远远低于预期.许多MySql的开发者离开了Sun和Oracle公司开始新的项目.在他们中间就

如何在Ubuntu 14.04上安装轻量级web服务器Cherokee

如何在Ubuntu 14.04上安装轻量级web服务器Cherokee Cherokee 是一个免费,开源,高性能轻量级的全功能web服务器,支持大部分主流操作系统(Linux. Mac OS X. Solaris 和 BSD).它支持TLS/SSL.FastCGI. SCGI. PHP. uWSGI. SSI. CGI. LDAP. HTTP代理. 视频流处理. 内容缓存. 流量控制. 虚拟主机.Apache兼容的日志文件,以及负载均衡等功能. 今天我们介绍一下怎样在Ubuntu Server

如何在Ubuntu 14.04中安装最新版Eclipse

想必很多开发人员都知道,Ubuntu 软件源中提供的并不是最新版本的 Eclipse,本教程就教大家如何在 Ubuntu 14.04 中快速安装 Eclipse 官方发布的最新版本. 到目前为止,Eclipse 的官方最新版本为 Eclipse Kepler (4.3.2),我们可以使用如下步骤在 Ubuntu 14.04 或其它 Ubuntu 版本中进行快速安装. 1.安装OpenJDK Java 7 如果你的系统中没有安装 Java,我们需要按如下步骤事先安装好 OpenJDK Java 7

如何在 Ubuntu 14.10 上安装 KDE Plasma 5.2

如何在 Ubuntu 14.10 上安装 KDE Plasma 5.2 KDE Plasma 5.2已经发布一段时间了,在本篇中我们将看到如何在Ubuntu 14.10 上安装KDE Plasma 5.2. Ubuntu的默认桌面环境Unity很漂亮还有很多特性,但是如果你问任何有经验的Linux用户关于桌面定制能力,他的回答将是KDE.KDE在定制上是王者并且它得到流行大概是由于Ubuntu有官方的KDE版本,也就是Kubuntu3. 对于Ubuntu(或者任何其他的Linux系统)而言的一个

Ubuntu 14.04上安装 Windows 应用的兼容层Wine步骤

Wine ("Wine Is Not an Emulator" 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,Mac OSX 及 BSD 等)上运行 Windows 应用的兼容层. Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是? Windows API 调用翻译成为动态的 POSIX 调用,免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面. 下面跟大家分享如何在Ubuntu

如何在Ubuntu 14.04 和14.10 上安装新的字体

如何在Ubuntu 14.04 和14.10 上安装新的字体 Ubuntu默认自带了很多字体.但有时候你或许对这些字体还不满意.因此,你可以做的是在Ubuntu 14.04. 14.10或者像Linux Mint之类的其它Linux系统中安装额外的字体. 第一步: 获取字体 第一步也是最重要的一步,下载你选择的字体.现在你或许在考虑从哪里下载字体.不要担心,Google搜索可以给你提供几个免费的字体网站.你可以先去看看 Lost Type 的字体.Squirrel同样也是一个下载字体的好地方.

如何在Ubuntu 14.04 上为Apache 2.4 安装SSL支持

如何在Ubuntu 14.04 上为Apache 2.4 安装SSL支持 今天我会讲述如何为你的个人网站或者博客安装SSL 证书,来保护你的访问者和网站之间通信的安全. 安全套接字层或称SSL,是一种加密网站和浏览器之间连接的标准安全技术.这确保服务器和浏览器之间传输的数据保持隐私和安全.它被成千上万的人使用来保护他们与客户的通信.要启用SSL链接,Web服务器需要安装SSL证书. 你可以创建你自己的SSL证书,但是这默认不会被浏览器所信任,要解决这个问题,你需要从受信任的证书机构(CA)处购买

如何在 Ubuntu 14.04 里面配置 chroot 环境

如何在 Ubuntu 14.04 里面配置 chroot 环境 你可能会有很多理由想要把一个应用.一个用户或者一个环境与你的 linux 系统隔离开来.不同的操作系统有不同的实现方式,而在 linux 中,一个典型的方式就是 chroot 环境. 在这份教程中,我会一步一步指导你怎么使用 chroot 命令去配置一个与真实系统分离出来的独立环境.这个功能主要可以用于测试项目,以下这些步骤都在 Ubuntu 14.04 虚拟专用服务器(VPS)上执行. 学会快速搭建一个简单的 chroot 环境是

如何在Ubuntu 14.04中配置PXE服务器

PXE(预启动执行环境Preboot Execution Environment) 服务器允许用户从网络中启动 Linux 发行版并且可以不需要 Linux ISO 镜像就能同时在数百台 PC 中安装.如果你客户端的计算机没有 CD/DVD 或USB 引导盘,或者如果你想在大型企业中同时安装多台计算机,那么 PXE 服务器可以帮你节省时间和金钱. 在这篇文章中,我们将告诉你如何在 Ubuntu 14.04 配置 PXE 服务器. 配置网络 开始前,你需要先设置 PXE 服务器使用静态 IP.在你