scrapy,python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。scrapy的安装稍显麻烦,不过按照以下步骤去进行,相信你也能很轻松的安装使用scrapy。

安装python2.7

scrapy1.0.3暂时只支持python2.7

# wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz

[root@rocket software]# tar -zxvf Python-2.7.6.tgz    # 解压

[root@rocket software]# cd Python-2.7.6

[root@rocket software]# mkdir /usr/local/python27   # 创建安装目录

[root@rocket software]# ./configure --prefix=/usr/local/python27

[root@rocket software]# make

[root@rocket software]# make install

# 目前安装的版本是2.6,需要替换成2.7

[root@rocket software]# mv /usr/bin/python /usr/bin/python2.6.6

[root@rocket software]# ln -s /usr/local/python27/bin/python /usr/bin/python

这里需要注意的是,由于原有系统安装的是python2.6,升级了python2.7,那么yum也会出问题

需要修改yum使用python2.6的版本

安装setuptools

进入官网,下载到本地,解压

https://pypi.python.org/pypi/setuptools#downloads

[root@rocket software]# cd setuptools-18.1

[root@rocket setuptools-18.1]# python setup.py install

安装pip

进入官网,下载到本地,解压

https://pypi.python.org/pypi/pip#downloads

[root@rocket software]# cd pip-7.1.2

[root@rocket pip-7.1.2]# python setup.py install

安装Twisted

进入官网,下载到本地,解压

wget https://pypi.python.org/packages/source/T/Twisted/Twisted-15.4.0.tar.bz2

[root@rocket software]# cd Twisted-15.4.0

[root@rocket Twisted-15.4.0]# python setup.py install

安装scrapy

pip install scrapy

在这个过程中,遇到以下问题

1 pip安装模块警告InsecurePlatformWarning: A true SSLContext object is not available.

yum install python-devel libffi-devel openssl-devel

pip install pyopenssl ndg-httpsclient pyasn1

在运行pip就不会出现警告了

2 安装lxml失败

解决方法是先安装libxslt开发包:

yum install libxslt-devel

确认安装成功

[root@rocket software]# rpm -qa | grep libxml

libxml2-devel-2.7.6-20.el6.x86_64

libxml2-python-2.7.6-20.el6.x86_64

libxml2-2.7.6-20.el6.x86_64

3 安装cffi失败

[root@rocket software]# yum -y install libffi-devel

[root@rocket software]# rpm -qa | grep libffi

libffi-3.0.5-3.2.el6.x86_64

libffi-devel-3.0.5-3.2.el6.x86_64

4 安装openssl失败

[root@rocket software]# yum -y install openssl-devel

[root@rocket software]# rpm -qa | grep openssl

openssl-devel-1.0.1e-42.el6.x86_64

openssl-1.0.1e-42.el6.x86_64

解决完以上几个问题后,重新执行

pip install scrapy

能够顺利安装成功。

确认安装成功

[root@rocket Twisted-15.4.0]# python

Python 2.7.6 (default, Oct 27 2015, 01:21:45)

[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import scrapy

没报错,安装成功。

开始第一个scrapy任务

详细介绍请参考

http://scrapy-chs.readthedocs.org/zh_CN/latest/intro/overview.html

[root@rocket scrapy]# scrapy startproject mininova

运行的时候报错,注意运行的时候,必须在mininova的主目录中运行,不然会报错

编写items.py

import scrapy

class MininovaItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
url = scrapy.Field()
name = scrapy.Field()
description = scrapy.Field()
size = scrapy.Field()

编写spiders/mininova_spiders.py

from scrapy.spiders import CrawlSpider, Rule, Spider
from scrapy.linkextractors import LinkExtractor
import scrapy
from mininova.items import MininovaItem class MininovaSpider(scrapy.spiders.CrawlSpider):
name = 'mininova'
allowed_domains = ['mininova.org']
start_urls = ['http://www.mininova.org/today']
rules = [Rule(LinkExtractor(allow=['/tor/\d+']), 'parse_torrent')] def parse_torrent(self, response):
torrent = MininovaItem()
torrent['url'] = response.url
torrent['name'] = response.xpath("//h1/text()").extract()
torrent['description'] = response.xpath("//div[@id='description']").extract()
torrent['size'] = response.xpath("//div[@id='info-left']/p[2]/text()[2]").extract()
return torrent

运行

[root@rocket mininova]# pwd

/home/demo/scrapy/mininova

[root@rocket mininova]# scrapy crawl mininova -o scraped_data.json

需要安装 sqlite-devel库,再重新编译安装Python

yum install sqlite-devel

[root@rocket software]# yum install sqlite-devel

[root@rocket software]# ./configure --prefix=/usr/local/python27

[root@rocket software]# make

[root@rocket software]# make install

这样就可以找到sqlite3的库了

[root@rocket software]# cd /usr/local/python27/lib/python2.7/lib-dynload/

[root@rocket lib-dynload]# ll|grep sql

-rwxr-xr-x. 1 root root 240971 Oct 28 01:17 _sqlite3.so

[root@rocket mininova]# scrapy crawl mininova -o scraped_data.json

终于可以跑起来了。。

接下来我们将进一步对scrapy的工作原理进行分析,并给出更为实用的例子。

scrapy初体验 - 安装遇到的坑及第一个范例的更多相关文章

  1. Scrapy 初体验

    开发笔记 Scrapy 初体验 scrapy startproject project_name 创建工程 scrapy genspider -t basic spider_name website. ...

  2. Scrapy初体验(一) 环境部署

    系统选择centOs 7,Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 (更确切来说, ...

  3. Serverless 初体验:快速开发与部署一个Hello World(Java版)

    昨天被阿里云的这个酷炫大屏吸引了! 我等85后开发者居然这么少!挺好奇到底什么鬼东西都是90.95后在玩?就深入看了一下. 这是一个关于Serverless的体验活动,Serverless在国内一直都 ...

  4. 老司机实战Windows Server Docker:1 初体验之各种填坑

    前言 Windows Server 2016正式版发布已经有近半年时间了,除了看到携程的同学分享了一些Windows Server Docker的实践经验,网上比较深入的资料,不管是中文或英文的,都还 ...

  5. MySQL初体验--安装MySQL

    操作系统版本:redhat 6.7 64位 [root@mysql ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server releas ...

  6. Cocos2d-x 3.4 初体验——安装教程

    电脑系统window7 32位 1.首先从官网下载cocos2d-x并解压 http://cn.cocos2d-x.org/download/ 解压后的文件夹中有一个setup.py,双击运行.需要安 ...

  7. Jenkins初体验-安装与部署服务

    一.概述 1.简介 在工作中接触到CD/CI,Devops相关的技术,本文记录Jenkins的基本使用.Jenkins是一款开源的持续集成工具,能够集成一套自动化部署任务. 目标 通过jenkins从 ...

  8. Jmeter的初体验--安装

    准备工作 安装JMeter前需要安装配置好Java 一.安装 1.直接在官网下载安装即可,下载地址:http://jmeter.apache.org/download_jmeter.cgi,(Wind ...

  9. scrapy初体验

    1. 构建scrapy项目 scrapy startproject ['项目名'] 在spiders下生成文件 cd spiders scrapy genspider douban_spider [' ...

随机推荐

  1. iOS:CocosPods的装配和配置ReactiveCocoa

    关于CocosPods的安装和配置ReactiveCocoa 1. CocoaPods和ReactiveCocoa的安装 CocoaPods是iOS最常用最有名的类库管理工具 使用ReactiveCo ...

  2. Linux Bash严重漏洞修复方法

    日前Linux官方内置Bash中新发现一个非常严重安全漏洞,黑客可以利用该Bash漏洞完全控制目标系统并发起攻击,为了避免Linux服务器受影响,就要尽快修补该漏洞了.(漏洞参考https://acc ...

  3. Windows下搭建Solr环境

    1.配置Java环境,可参考菜鸟教程:http://www.runoob.com/java/java-environment-setup.html (注意:在"系统变量"中设置3项 ...

  4. yum是什么?(linux命令)

    一. yum是什么 yum = Yellow dog Updater, Modified 主要功能是更方便的添加/删除/更新RPM包. 它能自动解决包的倚赖性问题. 它能便于管理大量系统的更新问题 注 ...

  5. css - font-size

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. LoadRunner测试WebService的3种方式

    LR在WebService虚拟用户协议中支持两种方式测试WebService,一种是通过“Add Service Call”的方式,一种是Import SOAP的方式. Import SOAP的方式需 ...

  7. Alternating Least Squares(ASL) for Implicit Feedback Datasets的数学推导以及用Python实现

    近期在看CF的相关论文,<Collaborative Filtering for Implicit Feedback Datasets>思想非常好,非常easy理解.可是从目标函数 是怎样 ...

  8. 【Java】Java_17 数组

    数组 数组是一种数据类型,属于引用类型. 1.定义数组 type[] arrayName; type arrayNmae[]; 以上2种定义数组方式的区别: type[] arrayName:语义强, ...

  9. angularJS学习笔记(二)

    前言 首先,了解 一下ng的一些概念: module 代码的组织单元,其它东西都是定义在具体的模块中的. app 应用业务,需要多个模块的配合完成. service 仅在数据层面实现特定业务功能的代码 ...

  10. 02-4设置第一启动项--U盘装系统中bios怎么设置USB启动

    整个U盘启动里最关键的一步就是设置U盘启动了,本教程内只是以特定型号的电脑为例进行演示,鉴于各种电脑不同BIOS设置U盘启动各有差异,所以如果下面的演示不能适用于你的电脑,建议去百度或者谷歌搜索一下你 ...