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

图:1 pip安装

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

sudo apt-get install python-dev

图:2 Python 开发库

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

sudo pip install scrapy

图:3 Scrapy 安装

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

图:4 成功安装Scrapy框架

使用scrapy框架提取数据

基础教程

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

$sudo scrapy startproject store_name

图:5 Scrapy框架新建项目

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

$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)。

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\">.*?

store_name = re.search(r"class=\"storeListStoreName\">.*?

store_name = re.search(r">.*?

store_name = re.sub(r'>',"",re.sub(r'

store_name = re.sub(r'&',"&",re.sub(r'&',"&",store_name,re.I))

#print store_name

output.write(store_name+""+"\n")

图:7 爬虫的输出

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

本文由 LCTT 原创翻译,Linux中国 荣誉推出

linux 爬虫工具,技术|如何在Ubuntu 14.04 LTS安装网络爬虫工具:Scrapy相关推荐

  1. 如何在Ubuntu 14.04上安装轻量级的Budgie桌面

    如何在Ubuntu 14.04上安装轻量级的Budgie桌面(v8) 热度 3  评论 115 www.BkJia.Com  网友分享于:   2015-05-05 11:05:11     浏览数4 ...

  2. 如何在Ubuntu 14.04上安装MySQL

    如何在Ubuntu 14.04上安装MySQL 介绍 MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一 ...

  3. Ubuntu 14.04 下安装Skype聊天工具

    Ubuntu 14.04对语音啦视频等支持还是不太好,而且我们常用的通讯工具是QQ,官方给出的Linux For QQ版本在Ubuntu中显得那样脆弱,而且功能也少,所以还是需要一款可以视频聊天的工具 ...

  4. Ubuntu 14.04 LTS 安装配置搜狗拼音输入法

    Ubuntu 14.04 LTS 安装配置搜狗拼音输入法 最近重装了N次系统,每次重装都要重新搜狗拼音输入法还有一系列文件.懒得再查别的文档,所以此处自己记录安装流程,下次直接搜自己博客按照流程安装就 ...

  5. linux 关掉蓝牙自动,如何在Ubuntu 14.04中默认关闭蓝牙,蓝牙

    如何在Ubuntu 14.04中默认关闭蓝牙,蓝牙 如何在Ubuntu 14.04中默认关闭蓝牙 我最近新买了一台Dell Inspiron 7437,我第一时间做的一些事情之一就是让预装的Windo ...

  6. v8系统计算机怎么安装到桌面,如何在Ubuntu 14.04上安装轻量级的Budgie桌面(v8)

    Budgie是为Linux发行版定制的旗舰桌面,也是一个定制工程.为思想前卫的用户设计,致力于简单和简洁.它的一个巨大优势是它不是别的项目的fork版本,是从都到尾都独立的. Budgie桌面与GNO ...

  7. ubuntu18的网关ip在哪里配_技术|如何在 Ubuntu 18.04 LTS 中配置 IP 地址

    在 Ubuntu 18.04 LTS 中配置 IP 地址的方法和以往使用的配置方法有很大的不同.和旧版本的不同之处在于,Ubuntu 18.04 使用 Netplan 来配置 IP 地址,Netpla ...

  8. oracle安装搜狗输入法教程,Linux入门学习教程:在Ubuntu 14.04中安装使用搜狗拼音输入法...

    然后,访问搜狗输入法Linux版的官网,http://pinyin.sogou.com/linux,下载搜狗输入法Linux版.从官网可以看到,该输入法官方只支持Ubuntu(不过网上有人通过将deb ...

  9. linux终端打开画图,如何在Ubuntu 18.04中安装协同绘画软件Drawpile

    这个快速教程展示了如何在Ubuntu 18.04,Ubuntu 18.10,Ubuntu 19.04中安装最新的免费协同绘画软件Drawpile(2.1.10到目前为止). Drawpile是一个Fr ...

最新文章

  1. Python实现字符串反转的6种方法
  2. 《疯狂Java讲义》(二十九)---- JDBC
  3. 第一次做项目经理总结_工程总承包项目:项目经理如果是第一次做,一定要把握这4个要点...
  4. Bailian2710 数制转换(POJ NOI0113-01)【进制】
  5. 实习踩坑之路:JSON格式错误,导致Java异常JSON parse error: Cannot deserialize instance of `java.util.ArrayList` out o
  6. C++使用opencv判断一个点是否在多边形之内
  7. Linux系统下的TCP测试工具,TCPING安装简明教程
  8. GitLab使用教程(详细)(转载)
  9. C语言打印出心形表白,初学C语言也能看懂!!
  10. python连接服务器执行命令进行部署
  11. Win10 安装美能达打印机驱动程序失败, 怎么也安装不了
  12. NeRF 源码分析解读(二)
  13. crossdomain.xml 文件安全配置 百度云观测、360网站监测 dz论坛crossdomain.xml
  14. Android热修复学习之旅开篇——热修复概述
  15. 学习Java,是看书好还是看视频?
  16. Fastapi学习笔记(一)
  17. Matlab函数、子函数的定义方法
  18. 赚翻了,快速带你学会Python爬虫接私单
  19. linux 查看es进程,Linux---关闭Elasticsearch进程,并重新启动
  20. like not like 优化 2

热门文章

  1. Python学习教程实用技法:通过公共键对字典列表排序—itemgetter
  2. 视觉SLAM十四讲学习笔记——第四讲--李群与李代数
  3. 注意scrapy中SgmlLinkExtractor的默认deny_extensions
  4. Google 菜市场(Android Market)上不去的解决方法
  5. SQLITE中原子提交的实现
  6. Network simulation using OPNET
  7. 谷歌将采取自动化系统审核,预计被误删视频数量或将大增
  8. 解析时代需要什么样的根目录,中国科技需要什么样的根技术
  9. 6大最流行、最有用的自然语言处理库对比
  10. 3d饼图 vue_Vue+Echarts构建可视化大数据平台实战项目分享(附源码)(上)