前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[Python爬虫]scrapy-redis快速上手(爬虫分布式改造)

[Python爬虫]scrapy-redis快速上手(爬虫分布式改造)

作者头像
Rude3Knife的公众号
发布于 2019-08-07 03:25:27
发布于 2019-08-07 03:25:27
2.6K00
代码可运行
举报
文章被收录于专栏:后端技术漫谈后端技术漫谈
运行总次数:0
代码可运行

作者的话

Python爬虫如何实现大批量爬取感兴趣的读者可以看下scrapy爬虫框架,并且使用本文的scrapy-redis将你的爬虫升级为分布式爬虫。

前言

阅读本文章,您需要:

  • 了解scrapy爬虫框架,知道scrapy的基本使用,最好已经有了可以单机运行的scrapy爬虫。
  • 了解scrapy-redis可以用来干嘛。
  • 已经尝试了一些反反爬措施后仍然觉得爬取效率太低。
  • 已经看了无数scrapy-redis文章,却和我一样不得要领。(自己太笨)
  • 已经看了无数scrapy-redis文章,被辣鸡文章坑的生活不能自理,到现在还没配置好。(可能还是自己太笨)

提示:本文为快速上手文章,有些操作的具体步骤不详细讲,自行百度通用解法,省略的部分我认为你可以自行解决,如果遇到问题,请留言提问

使用scrapy-redis将scrapy改造为分布式

安装需要的python库和数据库

  • 安装scrapy-redis:pip install scrapy-redis
  • 安装redis:可以仅在master(主)端安装
  • 安装其他数据库(可选):mysql,mangoDB,用来保存大量数据,当然也可以选择不安装。用其他方法处理数据。

提示:请注意版本问题,不要过低。

配置redis

  1. master(主)上的redis安装后,需要做以下几件事:
  • 配置redis.conf设置从外网访问:#bind 127.0.0.1
  • 最好设置个密码
  • 取消保护模式 protected-mode no
  1. master启动redis,使用./redis-server redis.conf(改为你的设置文件所在位置)
  2. 尝试从slave(从)连接master的redis,连接成功(盗的图):

image

修改scrapy:setting.py

添加如下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# scrapy-redis
REDIS_URL = 'redis://:yzd@127.0.0.1:6379'  # for master
# REDIS_URL = 'redis://:yzd@10.140.0.2:6379'  # for slave (master's ip)
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
SCHEDULER_PERSIST = True
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

对于itempipeline:你以前怎么存的数据还是怎么存,当然你也可以用redis先存,之后再一起转移出来。像我就直接存到mysql了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ITEM_PIPELINES = {
    # 'JD.pipelines.JdPipeline': 300,
    # 'scrapy_redis.pipelines.RedisPipeline': 400,
    'JD.mysqlpipelines.pipelines.JDPipeline': 300,
}

修改scrapy:spiders/xxxxx.py(自己命名的爬虫文件)

将继承改为继承Redisspider

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import scrapy
from JD.items import JdItem
import logging
from scrapy_redis.spiders import RedisSpider
import time

# class JDcat(scrapy.Spider):
class JDcat(RedisSpider):
    name = "JDcate"
    allowed_domains = ["jd.com"]

    # scrapy-redis
    redis_key = "JDcate:JD_urls"

    def start_requests(self):
        # designed by yourself
        # yield scrapy.Request(url=url, callback=self.parse)
        pass

    def parse(self, response):
        # designed by yourself
        pass

修改slave的存储数据库设置(可选)

如果你想要让slave抓取到的数据直接存入master的数据库,您别忘了修改slave的数据库连接设置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# for master
db_item = pymysql.connect(host="localhost", user="root", password="root",
                          db="pricemonitor", port=3306, charset='utf8')

# for slave
# db_item = pymysql.connect(host="10.140.0.2", user="root", password="root",
#                           db="pricemonitor", port=3306, charset='utf8')

启动分布式爬虫

启动master:scrapy crawl xxxxx 启动slave: crawl xxxxx

image2

上传了个demo源码,供大家修改使用: https://github.com/qqxx6661/scrapy_redis_demo

有问题请留言或邮件yangzd1993@foxmail.com

参考

https://www.cnblogs.com/zjl6/p/6742673.html scrapy-redis官方文档

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后端技术漫谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
2014年大数据和预测分析的动力
从预测市场趋势到获取客户需求的洞察力,预测分析可以帮助企业利用他们的数据发现新的机遇并赢得竞争对手。 然而, 研究发现,企业并不是用大数据和预测分析来实现他们的全部潜力。 这并不是说他们没有看
静一
2018/03/16
6260
关于2014年大数据预测分析市场的预测
多年来,企业都一直无法充分利用大数据进行预测分析。由于社交媒体的普及带来了消费者日常生活习惯、活动和兴趣方面的数据信息量的巨大增长。这些新的外部数据资源将与企业所收集的数据相结合,以增加预测分析模型的精度。 随着海量信息被分析和编译,对于企业而言,现在比以往任何时候都更容易的充分利用这些数据来解决他们的具体业务需求。而且,通过利用大数据预测分析说带来的好处远远超出了传统营销的应用程序。 据路透社新闻报道,大数据的价值量将保持45%的年增长速度,到明年将达到250亿美元。这也就意味着,今年我们将看到数据预测分
小莹莹
2018/04/18
5860
解析大数据分析行业的现状与前景:全球视角下的中国力量
在一个充满数据的时代,大数据分析已经成为推动各行各业发展的核心动力。最近,一位来自其他行业的前辈向我咨询大数据分析行业的从业情况。为了更好地回答他的疑问,我决定写一篇文章,结合全球视角,重点介绍中国大数据分析行业的现状与未来前景。希望通过这篇文章,能够为有志于进入大数据分析领域的朋友们提供一些有价值的见解。
theskylife
2024/07/29
2.9K0
【观点】没有数据驱动的流程和产品,你的大数据毫无价值
最近大数据很火,什么公司都想和大数据扯上点关系,出门不说两句大数据好像就不能突出自己的专业。敢问除了那几个"target:等几个耳熟能详的例子还有其他吗?之前吹捧zynga的数据有多牛的声音又到那里去了?你们家的数据整合完成了吗?太多的时候,我们需要静一静,"Big Data,Show me the money?" 大数据并不少见。哪怕你只是一家小型创业公司,一天下来你可能就拿到了几个G的数据,而Instagram一天产生的数据则高达500个T。坐在不断增加的数据上的你,挠着头苦想:“大
小莹莹
2018/04/18
5260
入门选手必备 | 大数据分析学习之路
目录: 大数据分析的五个基本方面 如何选择适合的数据分析工具 如何区分三个大数据热门职业 从菜鸟成为数据科学家的 9步养成方案 从入门到精通—快速学会大数据分析 一、大数据分析的五个基本方面 1.可视化分析 大数据分析的使用者有大数据分析专家,同时还有普通用户,但是他们二者对于大数据分析最基本的要求就是可视化分析,因为可视化分析能够直观的呈现大数据特点,同时能够非常容易被读者所接受,就如同看图说话一样简单明了。 2.数据挖掘算法 大数据分析的理论核心就是数据挖掘算法,各种数据挖掘的算法基于不同的数据类型和格
CDA数据分析师
2018/02/13
8660
如何利用大数据进行预测性营销,看完这8个深度解答你就懂了
1、什么是精准营销,预测营销? 说到精准营销,不得不先提个性化的用户画像,我们针对每一类数据实体,进一步分解可落地的数据维度,刻画他/她的每一个特征,在聚集起来形成人群画像。比如下面就是两种典型年轻消
BestSDK
2018/02/28
8.5K0
如何利用大数据进行预测性营销,看完这8个深度解答你就懂了
OushuDB 小课堂丨高级分析用例
到 2023 年,转向高级分析的组织将能够更好地利用各自行业中的新机遇。随着自动化数据分析的使用,公司越来越多地转向分析系统和高级分析用例,以实现战略转型和数字战略。
用户7454708
2023/05/09
1610
【数据】银行业9大数据科学应用案例
在银行业中使用数据科学不仅仅是一种趋势,它已成为保持竞争的必要条件。 银行必须认识到,大数据技术可以帮助他们有效地集中资源,做出更明智的决策并提高绩效。
陆勤_数据人网
2018/07/30
3.6K0
【数据】银行业9大数据科学应用案例
大数据分析:最难的不是分析,而是大数据
从先进的BI工具到机器学习,人工智能,现代企业拥有着各式各样整理分析数据的方法和途径。数据科学家和企业领导人都关注着这些新技术的巨大潜力,然而,当我们将焦点放在分析工具身上时,我们也可能忽略了数据本身
灯塔大数据
2018/04/04
9390
大数据分析:最难的不是分析,而是大数据
数据分析为什么火了
数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用。数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。
数据社
2020/05/25
7290
大数据工具指南:从选择到应用
通过部署和使用大数据分析工具,分析流程可以帮助公司提高运营效率,产生新的利润,获得竞争优势。企业可选择的数据分析应用程序有很多。比如描述性分析善于描述已发生的事情,揭示因果关系。描述性分析主要输出查询、报表和历史数据可视化。
IT阅读排行榜
2018/08/14
4860
大数据工具指南:从选择到应用
【热点】大数据分析的八大趋势
Intuit公司的数据工程副总裁Bill Loconzolo,双脚踏进了数据湖。.Smarter Remarketer的首席数据科学家Dean Abbott直接奔向了云计算。大数据和分析的领先优势,其中包括用来存储原生格式的大量数据的数据湖泊,当然,云计算技术也在快速前进。虽然技术选项还远远没有成熟,但是等待根本不是一个选项。 “现实情况是,这些工具仍不断涌现,并且Hadoop的平台的承诺并没有达到业务需要依赖于它的水平,”Loconzolo说。但是,大数据和分析的学科发展如此之快以至于企业需要在涉水该方面
小莹莹
2018/04/20
1.1K0
【热点】大数据分析的八大趋势
让高管了解大数据分析
过去三十年,许多公司增设新的管理层以应对变幻莫测的商业环境。上世纪80年代中期,对于多数公司而言,首席财务官还是个陌生的职位。然而,伴随着价值管理以及企业与投资人关系日趋透明,越来越多的公司有了首席财务官。随着品牌建设与客户管理对公司的重要性与日俱增,首席市场官就变得越来越重要,此外,还有不少公司设置了首席战略官,帮助公司应对来自市场的挑战。   现在,数据分析的力量正深刻影响着商业格局。抓住数据发展带来的机遇,增加利润,提升生产力甚至打造全新的业务单元,成为了企业的新需求——这不仅需要信息基础设施领域的人
CDA数据分析师
2018/02/08
5860
BAT大数据分析师:如何规划大数据学习之路?
在美国,大数据工程师平均年薪达17.5万美元,在中国顶尖的互联网公司里,大数据工程师的薪酬比同级别的其他职位高出30%以上。DT时代来得太突然了,国内发展势头很猛,而大数据相关的人才却非常地有限,在未来若干年内都会是供不应求的状况,因此程序员们,你们的春天到了!
1480
2019/05/30
1.1K0
使用大数据分析的十大行业
原作者 Maruti Techlabs 编译 CDA 编译团队 本文为 CDA 数据分析师原创作品,转载需授权 大数据每天都在发展,并成为科技界的热门词汇。我们周围的许多人都在谈论它,但他们知道它的真正含义吗? 大数据只不过是非结构化数据的集合。这些数据不是以特定的格式,因为数据集通常是巨大的,有时是数十兆字节,有时甚至超过了PB级别。大数据这个术语出现之前用的是大型数据库(VLDB),由数据库管理系统(DBMS)进行管理。 大量与商业有关的数据能够有效增加公司的销售与利润。为了做到这一点,我们需要利用大
CDA数据分析师
2018/02/26
2K0
使用大数据分析的十大行业
详解:大数据分析的学习之路
  大数据分析的使用者有大数据分析专家,同时还有普通用户,但是他们二者对于大数据分析最基本的要求就是可视化分析,因为可视化分析能够直观的呈现大数据特点,同时能够非常容易被读者所接受,就如同看图说话一样简单明了。
IT阅读排行榜
2018/08/16
5580
详解:大数据分析的学习之路
15个国外顶级的大数据分析工具
嵌入式分析 在传统业务应用程序(如HR系统,CRM或ERP)的范围内提供商业智能。这些分析在用户的正常工作流程中提供上下文敏感的决策支持。
Blue姐
2019/06/26
4.5K0
推荐 | 收藏备用:大数据分析工具采购指南
大数据分析工具使用户能够分析各种各样的信息——包括结构化事务数据和社交媒体帖子、Web服务器日志文件及其他形式的非结构化和半结构化数据。一旦组织决定要购买一个大数据分析工具,下一步就是制定一个流程,评估可用的产品,然后从中找到一个最适合你需求和要求的产品。 下面我们将介绍在评估各种大数据分析工具符合企业需求的程度时可能用到的必备特性和特定属性。然后,你再编写一个预案请求(RFP),说明使用这些工具将如何解决组织的需求。 评估标准 建模技术的广度与深度。供应商已经应用了不同级别的建模,并且相应地开发了不同复杂
CDA数据分析师
2018/02/11
1K0
揭穿数据分析的六大谎言
目前许多企业在决策时仍沿用以往的个人经验,没有用数据说话,这在实际决策运行时会出现很多问题。在数据分析行业发展成熟的国家,90%的市场决策和经营决策都是通过数据分析研究确定的。用数据说话,重视定量分析,也逐渐成为科学研究、企业经营、政府决策等过程着重考虑的问题,越来越多的人们意识到数据分析对经济发展的重要意义。 什么是数据分析呢? 权威组织Gartner Group的定义:一类由数据仓库(或数据集市)、查询报告、数据分析、数据挖掘、数据备份和恢复等组成的应用,以帮助企业决策。 但在现代,商业智能是指利用现代数据仓库技术、在线分析处理技术、数据挖掘和数据展示技术,进行数据分析。其实质是数据+业务理解, 总结一句话,就是通过各种BI软件的功能,实现商业价值。
葡萄城控件
2023/03/01
3830
揭穿数据分析的六大谎言
大数据分析的八大趋势
Intuit数据工程副主管Loconzolo双脚都已经迈进数据湖里了。Smarter Remarketer首席数据科学家DeanAbbott也为云技术的发展指出了捷径。他们二人一致认为, 大数据与分析学前沿是个活动目标,这一领域包含了储存原始数据的数据湖和云计算。尽管这些技术并未成熟,但等待也并非上策。 Loconzolo表示:“现实的情况是,这些工具都刚刚兴起,他们构筑的平台还不足以让企业依赖。但是,大数据和分析学等学科发展十分迅速,因此企业必须努力跟上,否则就有被甩掉的危险。”他还说:“过去,新兴
腾讯研究院
2018/01/31
8720
推荐阅读
相关推荐
2014年大数据和预测分析的动力
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档