linux 爬虫工具,技术|如何在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。
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相关推荐
- 如何在Ubuntu 14.04上安装轻量级的Budgie桌面
如何在Ubuntu 14.04上安装轻量级的Budgie桌面(v8) 热度 3 评论 115 www.BkJia.Com 网友分享于: 2015-05-05 11:05:11 浏览数4 ...
- 如何在Ubuntu 14.04上安装MySQL
如何在Ubuntu 14.04上安装MySQL 介绍 MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一 ...
- Ubuntu 14.04 下安装Skype聊天工具
Ubuntu 14.04对语音啦视频等支持还是不太好,而且我们常用的通讯工具是QQ,官方给出的Linux For QQ版本在Ubuntu中显得那样脆弱,而且功能也少,所以还是需要一款可以视频聊天的工具 ...
- Ubuntu 14.04 LTS 安装配置搜狗拼音输入法
Ubuntu 14.04 LTS 安装配置搜狗拼音输入法 最近重装了N次系统,每次重装都要重新搜狗拼音输入法还有一系列文件.懒得再查别的文档,所以此处自己记录安装流程,下次直接搜自己博客按照流程安装就 ...
- linux 关掉蓝牙自动,如何在Ubuntu 14.04中默认关闭蓝牙,蓝牙
如何在Ubuntu 14.04中默认关闭蓝牙,蓝牙 如何在Ubuntu 14.04中默认关闭蓝牙 我最近新买了一台Dell Inspiron 7437,我第一时间做的一些事情之一就是让预装的Windo ...
- v8系统计算机怎么安装到桌面,如何在Ubuntu 14.04上安装轻量级的Budgie桌面(v8)
Budgie是为Linux发行版定制的旗舰桌面,也是一个定制工程.为思想前卫的用户设计,致力于简单和简洁.它的一个巨大优势是它不是别的项目的fork版本,是从都到尾都独立的. Budgie桌面与GNO ...
- ubuntu18的网关ip在哪里配_技术|如何在 Ubuntu 18.04 LTS 中配置 IP 地址
在 Ubuntu 18.04 LTS 中配置 IP 地址的方法和以往使用的配置方法有很大的不同.和旧版本的不同之处在于,Ubuntu 18.04 使用 Netplan 来配置 IP 地址,Netpla ...
- oracle安装搜狗输入法教程,Linux入门学习教程:在Ubuntu 14.04中安装使用搜狗拼音输入法...
然后,访问搜狗输入法Linux版的官网,http://pinyin.sogou.com/linux,下载搜狗输入法Linux版.从官网可以看到,该输入法官方只支持Ubuntu(不过网上有人通过将deb ...
- linux终端打开画图,如何在Ubuntu 18.04中安装协同绘画软件Drawpile
这个快速教程展示了如何在Ubuntu 18.04,Ubuntu 18.10,Ubuntu 19.04中安装最新的免费协同绘画软件Drawpile(2.1.10到目前为止). Drawpile是一个Fr ...
最新文章
- Python实现字符串反转的6种方法
- 《疯狂Java讲义》(二十九)---- JDBC
- 第一次做项目经理总结_工程总承包项目:项目经理如果是第一次做,一定要把握这4个要点...
- Bailian2710 数制转换(POJ NOI0113-01)【进制】
- 实习踩坑之路:JSON格式错误,导致Java异常JSON parse error: Cannot deserialize instance of `java.util.ArrayList` out o
- C++使用opencv判断一个点是否在多边形之内
- Linux系统下的TCP测试工具,TCPING安装简明教程
- GitLab使用教程(详细)(转载)
- C语言打印出心形表白,初学C语言也能看懂!!
- python连接服务器执行命令进行部署
- Win10 安装美能达打印机驱动程序失败, 怎么也安装不了
- NeRF 源码分析解读(二)
- crossdomain.xml 文件安全配置 百度云观测、360网站监测 dz论坛crossdomain.xml
- Android热修复学习之旅开篇——热修复概述
- 学习Java,是看书好还是看视频?
- Fastapi学习笔记(一)
- Matlab函数、子函数的定义方法
- 赚翻了,快速带你学会Python爬虫接私单
- linux 查看es进程,Linux---关闭Elasticsearch进程,并重新启动
- like not like 优化 2
热门文章
- Python学习教程实用技法:通过公共键对字典列表排序—itemgetter
- 视觉SLAM十四讲学习笔记——第四讲--李群与李代数
- 注意scrapy中SgmlLinkExtractor的默认deny_extensions
- Google 菜市场(Android Market)上不去的解决方法
- SQLITE中原子提交的实现
- Network simulation using OPNET
- 谷歌将采取自动化系统审核,预计被误删视频数量或将大增
- 解析时代需要什么样的根目录,中国科技需要什么样的根技术
- 6大最流行、最有用的自然语言处理库对比
- 3d饼图 vue_Vue+Echarts构建可视化大数据平台实战项目分享(附源码)(上)