Scrapy

原创 2018年04月17日 21:59:58

什么是Scrapy

Scrapy是一个爬取网页和抽取结构化数据的应用框架,可以用来做数据挖掘、信息处理。

  • 内置支持使用CSS选择器、XPath表达式和正则表达式从HTML/XML选择抽取数据
  • 交互式shell控制台(IPython)测试CSS/XPath语句,用于编写调试爬虫
  • 内置支持多种格式(JSON, CSV, XML)的生成形式,并保存在本地文件系统中
  • 在编码问题上具有自动识别的功能
  • 强扩展性
  • 中间件处理
    (1)cookies和session处理
    (2)HTTP功能:压缩、身份验证、缓存
    (3)user-agent欺骗
    (4)robots.txt
    (5)爬取深度限制
    (6)更多

Scrapy框架分为五大组件:Scrapy engine(引擎)、Scheduler(调度器)、Downloader(下载器)、Spider(爬虫)、Item Pipelines(管道),外加两个中间件:Downloader Middlewares下载中间件和Spider Middlewares爬虫中间件。

首先engine将URL对应的Requests请求发送给Scheduler,Scheduler将其按照一定方式整理排列,入队,并在engine需要的时候归还。随后engine将这些Requests发送给Downloader,Downloader完成下载后将获取到的Responses交还给engine,engine收到后将Responses交给Spider处理,Spider分析所有的Responses并提取数据,获取到的Item字段将交给Pipelines下载,而把需要跟进的URL提交给engine,以便再次进入调度器。如此循环直至Scheduler中不存在任何Requests了,整个程序才会停止。

可以看出在整个过程中,引擎是整个框架的核心,它负责其余四大组件的通讯、信号和数据传递。

至于两个中间件都是用来自定义扩展的,具体用法将来再谈。

import scrapy

class TorrentItem(scrapy.Item):
    url = scrapy.Field()
    name = scrapy.Field()
    description = scrapy.Field()
    size = scrapy.Field()
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor

class MininovaSpider(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 = TorrentItem()
        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
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34435926/article/details/79981614

scrapy parse()方法工作机制

转载自 http://blog.csdn.net/one_day123/article/details/77481655 1. 因为使用的yield,而不是return。parse函数将会被当...
  • tianshuijun12
  • tianshuijun12
  • 2017-11-21 10:13:37
  • 911

爬虫框架Scrapy的第一个爬虫示例入门教程

转自:http://blog.csdn.net/z1137730824/article/details/42266113 我们使用dmoz.org这个网站来作为小抓抓一展身手的对象。 ...
  • ghj751105352
  • ghj751105352
  • 2015-05-20 20:37:40
  • 1362

scrapy-1.4.pdf

  • 2017年11月22日 16:58
  • 1.15MB
  • 下载

scrapy下载图片

  • 2017年12月21日 15:48
  • 9KB
  • 下载

scrapy爬虫起步(1)--第一个爬虫程序

使用scrapy抓取豆瓣小组的组名1. 新建scrapy工程新建工程文件夹,命令行cd到该目录下,用下面的命令新建一个scrapy工程 scrapy startproject dmoz 新建好的...
  • felcon
  • felcon
  • 2015-06-16 15:49:12
  • 1077

Scrapy之路第一篇

Scrapy之路第一篇(入门案例) 构建自己的数据王国新建项目 明确目标 制作爬虫 保存数据 一、新建项目(scrapy startproject) 在爬取前,必须创建一个新的scrapy项目,进...
  • qq_30067751
  • qq_30067751
  • 2017-09-28 23:00:53
  • 166

Learning Scrapy 中文版

  • 2018年02月04日 18:44
  • 2.97MB
  • 下载

Scrapy爬虫框架视频

  • 2018年01月06日 20:40
  • 111.21MB
  • 下载

Python 之 Scrapy笔记(1)- 入门篇

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取(更确切来说,网络抓取)所设计的, 也可以应用...
  • VIP_WangSai
  • VIP_WangSai
  • 2016-08-11 14:04:32
  • 376

Scrapy爬虫入门系列1 安装

安装python2.7 参见CentOS升级python 2.6到2.7 安装pip 参见CentOS安装python setuptools and pip‎ ...
  • elesos
  • elesos
  • 2017-04-27 14:19:57
  • 313
收藏助手
不良信息举报
您举报文章:Scrapy
举报原因:
原因补充:

(最多只允许输入30个字)