scrapy

使用scrapy-redis搭建分布式爬虫环境

☆樱花仙子☆ 提交于 2020-04-26 08:07:58
scrapy-redis简介 scrapy-redis是scrapy框架基于redis数据库的组件,用于scrapy项目的分布式开发和部署。 有如下特征:  分布式爬取   您可以启动多个spider工程,相互之间共享单个redis的requests队列。最适合广泛的多个域名网站的内容爬取。  分布式数据处理   爬取到的scrapy的item数据可以推入到redis队列中,这意味着你可以根据需求启动尽可能多的处理程序来共享item的队列,进行item数据持久化处理  Scrapy即插即用组件   Scheduler调度器 + Duplication复制 过滤器,Item Pipeline,基本spider scrapy-redis架构 scrapy-redis整体运行流程如下: 1. 首先Slaver端从Master端拿任务(Request、url)进行数据抓取,Slaver抓取数据的同时,产生新任务的Request便提交给 Master 处理; 2. Master端只有一个Redis数据库,负责将未处理的Request去重和任务分配,将处理后的Request加入待爬队列,并且存储爬取的数据。 Scrapy-Redis默认使用的就是这种策略,我们实现起来很简单,因为任务调度等工作Scrapy-Redis都已经帮我们做好了,我们只需要继承RedisSpider、指定redis

15-scrapy-redis两种形式分布式爬虫

我与影子孤独终老i 提交于 2020-04-26 08:07:40
什么叫做分布式爬虫?   分布式爬虫,就是多台机器共用一个scrapy—redis程序高效爬取数据,   为啥要用分布式爬虫?     其一:因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls列表中的url。(多台机器无法共享同一个调度器)     其二:多台机器爬取到的数据无法通过同一个管道对数据进行统一的数据持久出存储。(多台机器无法共享同一个管道) scrapy-redis组件分布式爬虫:   scrapy-redis为我们封装好了多台机器共用的管道以及调度器,导入包调用链接即可实现分布式爬虫。  分布式实现的方式:1、基于该组件的RedisSpider类           2、基于该组件的RedisCrawlSpider类 分布式实现流程:上述两种不同方式的分布式实现流程是统一的。   1、下载scrapy-redis组件: pip3 install scrapy-redis   2、导包: from scrapy_redis.spiders import RedisCrawlSpider   3、修改爬虫文件的代码     1)将当前爬虫类的父类修改成RedisCrawlSpider     2)将start_urls删除     3)添加一个新属性redis_key = "ts":可以被共享调度器中的队列名称 # -

爬虫-基于scrapy-redis两种形式的分布式爬虫

笑着哭i 提交于 2020-04-26 08:07:20
redis分布式部署 1.scrapy框架是否可以自己实现分布式?     - 不可以。原因有二。       其一:因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls列表中的url。(多台机器无法共享同一个调度器)       其二:多台机器爬取到的数据无法通过同一个管道对数据进行统一的数据持久出存储。(多台机器无法共享同一个管道) 2.基于scrapy-redis组件的分布式爬虫 - scrapy-redis组件中为我们封装好了可以被多台机器共享的调度器和管道,我们可以直接使用并实现分布式数据爬取。 - 实现方式: 1.基于该组件的RedisSpider类 2.基于该组件的RedisCrawlSpider类 3.分布式实现流程:上述两种不同方式的分布式实现流程是统一的 - 3.1 下载scrapy-redis组件:pip install scrapy-redis - 3.2 redis配置文件的配置: - 注释该行:bind 127.0.0.1,表示可以让其他ip访问redis - 将yes该为no:protected-mode no,表示可以让其他ip操作redis 3.3 修改爬虫文件中的相关代码: - 将爬虫类的父类修改成基于RedisSpider或者RedisCrawlSpider。注意

爬虫入门之Scrapy 框架基础功能(九)

大憨熊 提交于 2020-04-26 08:07:07
Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。 Scrapy 使用了 Twisted(其主要对手是Tornado)多线程异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。 1 Scrapy架构图(绿线是数据流向) Scrapy Engine (引擎): 负责 Spider、ItemPipeline、Downloader、Scheduler 中间通讯,信号、数据传递等。 Scheduler(调度器) : 它负责接受 引擎 发送过来的Request请求,并按照一定的方式进行整理排队,当 引擎 需要时,交还给 引擎 。 Downloader(下载器) :负责下载 Scrapy Engine(引擎) 发送的所有Requests请求,并将其获取到的Responses交还给 Scrapy Engine(引擎) ,由 引擎 交给 Spider 来处理. Spider(爬虫) :它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给 引擎 ,再次进入 Scheduler(调度器) , Item Pipeline

在阿里云Centos7.6上面部署基于redis的分布式爬虫scrapy-redis

ε祈祈猫儿з 提交于 2020-04-26 07:35:09
Scrapy是一个比较好用的Python爬虫框架,你只需要编写几个组件就可以实现网页数据的爬取。但是当我们要爬取的页面非常多的时候,单个服务器的处理能力就不能满足我们的需求了(无论是处理速度还是网络请求的并发数),这时候分布式爬虫的优势就显现出来。 而Scrapy-Redis则是一个基于Redis的Scrapy分布式组件。它利用Redis对用于爬取的请求(Requests)进行存储和调度(Schedule),并对爬取产生的项目(items)存储以供后续处理使用。scrapy-redi重写了scrapy一些比较关键的代码,将scrapy变成一个可以在多个主机上同时运行的分布式爬虫。 说白了,就是使用redis来维护一个url队列,然后scrapy爬虫都连接这一个redis获取url,且当爬虫在redis处拿走了一个url后,redis会将这个url从队列中清除,保证不会被2个爬虫拿到同一个url,即使可能2个爬虫同时请求拿到同一个url,在返回结果的时候redis还会再做一次去重处理,所以这样就能达到分布式效果,我们拿一台主机做redis 队列,然后在其他主机上运行爬虫.且scrapy-redis会一直保持与redis的连接,所以即使当redis 队列中没有了url,爬虫会定时刷新请求,一旦当队列中有新的url后,爬虫就立即开始继续爬 首先分别在主机和从机上安装需要的爬虫库 pip3

基于scrapy-redis两种形式的分布式爬虫

不打扰是莪最后的温柔 提交于 2020-04-26 07:26:45
[TOC] 基于scrapy-redis两种形式的分布式爬虫 1.scrapy框架是否可以自己实现分布式?     - 不可以。原因有二。       其一:因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls列表中的url。(多台机器无法共享同一个调度器)       其二:多台机器爬取到的数据无法通过同一个管道对数据进行统一的数据持久出存储。(多台机器无法共享同一个管道) 2.基于scrapy-redis组件的分布式爬虫 - scrapy-redis组件中为我们封装好了可以被多台机器共享的调度器和管道,我们可以直接使用并实现分布式数据爬取。 - 实现方式: 1.基于该组件的RedisSpider类 2.基于该组件的RedisCrawlSpider类 3.分布式实现流程:上述两种不同方式的分布式实现流程是统一的 3.1 下载scrapy-redis组件:pip install scrapy-redis 3.2 redis配置文件的配置: - 注释该行:bind 127.0.0.1,表示可以让其他ip访问redis - 将yes该为no:protected-mode no,表示可以让其他ip操作redis 3.3 修改爬虫文件中的相关代码: - 将爬虫类的父类修改成基于RedisSpider或者RedisCrawlSpider。注意

Scrapy:创建爬虫程序的方式

…衆ロ難τιáo~ 提交于 2020-04-26 07:26:31
Windows 10家庭中文版,Python 3.6.4,Scrapy 1.5.0, 在Scrapy中,建立爬虫程序或项目的方式有两种(在孤读过Scrapy的大部分文档后): 1.继承官方Spider类(5个) 2.命令行工具scrapy genspider(4个) 方式一:继承官方Spider类 下图是官网的示例:继承了 scrapy.Spider 这里的scrapy.Spider是在scrapy包的 __init__.py 中导入的,实际上来自于 scrapy.spiders.Spiders : 除了Spider类以外,scrapy内部还有几个Generic Spiders类: -class scrapy.spiders. CrawlSpider -class scrapy.spiders. XMLFeedSpider -class scrapy.spiders. CSVFeedSpider -class scrapy.spiders. SitemapSpider 上面的几个Spider类 都可以被继承 以实现自己的爬虫程序(目前自己不是很熟悉,仅在前面测试过SitemapSpider,但其官网SitemapSpider的示例没有name属性,故需要添加后才可以运行)。 更多资料: Scrapy官方Spiders文档 方式二:命令行工具scrapy genspider

基于Scrapy框架的Python新闻爬虫

不问归期 提交于 2020-04-26 06:11:52
概述 该项目是基于Scrapy框架的Python新闻爬虫,能够爬取网易,搜狐,凤凰和澎湃网站上的新闻,将标题,内容,评论,时间等内容整理并保存到本地 详细 代码下载: http://www.demodashi.com/demo/13933.html 一、开发背景 Python作为数据处理方面的一把好手,近年来的热度不断增长。网络爬虫可以说是Python最具代表性的应用之一,那么通过网络爬虫来学习Python以及网络和数据处理的相关内容可以说是再合适不过了。 Scrapy是由Python语言开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。相比于传统的爬虫来说,基于scrapy框架的爬虫更加结构化,同时也更加高效,能完成更加复杂的爬取任务。 二、爬虫效果 1、标题 2、内容 3、评论 4、日期,热度和ID 5、程序运行图 三、具体开发 1、任务需求 1. 爬取网易,搜狐,凤凰和澎湃新闻网站的文章及评论 2. 新闻网页数目不少于10万页 3. 每个新闻网页及其评论能在1天内更新 2、功能设计 1. 设计一个网络爬虫,能够爬取指定网站的全部页面,并提取其中的文章及评论内容 2. 定时运行网络爬虫,实现每日更新数据 3、系统架构 首先简单介绍下scrapy框架,这是一个爬虫框架 绿线是数据流向, (1)首先从初始URL 开始,Scheduler

Python爬虫教程-31-创建 Scrapy 爬虫框架项目

淺唱寂寞╮ 提交于 2020-04-26 06:10:58
本篇是介绍在 Anaconda 环境下,创建 Scrapy 爬虫框架项目的步骤,且介绍比较详细 Python爬虫教程-31-创建 Scrapy 爬虫框架项目 首先说一下,本篇是在 Anaconda 环境下,所以如果没有安装 Anaconda 请先到官网下载安装 Anaconda 下载地址: https://www.anaconda.com/download/ Scrapy 爬虫框架项目的创建 0.打开【cmd】 1.进入你要使用的 Anaconda 环境 1.环境名可以在【Pycharm】的【Settings】下【Project:】下找到 2.使用命令:activate 环境名 ,例如: activate learn 3.进入想要存放 scrapy 项目的目录下 【注意】 4.新建项目:scrapy startproject xxx项目名 ,例如: scrapy startproject new_project 5.操作截图: 6.在文件资源管理器打开该目录,就会发现生成了好几个文件 7.使用 Pycharm 打开项目所在目录就可以了 这里我们就把项目创建好了,分析一下自动生成的文件的作用 Scrapy 爬虫框架项目的开发 0.使用 Pycharm 打开项目,截图: 项目的开发的大致流程: 1.明确需要爬取的目标/产品:编写 item.py 2.在 spider 目录下载创建

Python网络爬虫实战-Scrapy视频教程 Python系统化项目实战课程 Scrapy技术课程

﹥>﹥吖頭↗ 提交于 2020-04-26 06:10:30
课程目录 01.scrapy是什么.mp4 Python实战-02.初步使用scrapy.mp4 Python实战-03.scrapy的基本使用步骤.mp4 Python实战-04.基本概念介绍1-scrapy命令行工具.mp4 Python实战-05.本概念介绍2-scrapy的重要组件.mp4 Python实战-06.基本概念介绍3-scrapy中的重要对象.mp4 Python实战-07.scrapy内置服务介绍.mp4 Python实战-08.抓取进阶-对“西刺”网站的抓取.mp4 Python实战-09.“西刺”网站爬虫的核心代码解读.mp4 Python实战-10.Scrapy框架解读—深入理解爬虫原理.mp4 Python实战-11.实用技巧1—多级页面的抓取技巧.mp4 Python实战-12.实用技巧2—图片的抓取.mp4 Python实战-13.抓取过程中的常见问题1—代理ip的使用.mp4 Python实战-14.抓取过程中的常见问题2—cookie的处理.mp4 Python实战-15.抓取 过程中的常见问题3—js的处理技巧.mp4 Python实战-16.scrapy的部署工具介绍-scrapyd.mp4 Python实战-17.部署scrapy到scrapyd.mp4 Python实战-18.课程总结.mp4 Python实战-Scrapy课件源码