Scrapy- 异步爬虫框架-分布式爬虫scrapy-redis-python爬虫知识点8

一、scrapy简介

什么是Scrapy

  • Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速的抓取
    Scrapy,基于异步,使用了Twisted异步网络框架,可以加快我们的下载速度

优点

  • 可配置、可扩展性非常高
  • 比较灵活,让稳定和快速
  • 基于异步,内部封装了这个twisted异步网络框架,复杂,采用了大量闭包
  • 也提供了可控的速度

异步和非阻塞的区别

  • 异步:调用在发出之后,这个调用就直接返回,不管有无结果
  • 非阻塞:关注的是程序在等待调用结果时的状态,指在不能立刻得到结果之前,该调用不会阻塞当前线程
    在这里插入图片描述

(一)scrapy 的工作流程

在这里插入图片描述

Scrapy 功能组成 作用 是否还要编写
Scrapy engine(引擎) 总指挥:负责数据和信号的在不同模块间的传递 发动机、统筹全局、整个框架的核心 不需要 , scrapy已经实现
Scheduler(调度器) 一个队列,存放引擎发过来的request请求(接收从引擎发过来的url,入列,然后向引擎发送request请求,直到url全部取完) 不需要
Downloader(下载器) 接收引擎发过来的请求,发出网页请求,得到相应结果,源码给引擎 不需要
Spider(爬虫) 处理引擎发来的response,提取数据,提取url,并交给引擎 需要手写
Item Pipline(管道) 处理引擎传过来的数据,比如存储(数据处理、存储数据) 需要手写
Downloader Middlewares(下载中间件) 可以设置headers、代理IP等),处理引擎和下载器之间的请求和响应 一般不用手写
Spider Middlewares(爬虫中间件) 可以自定义requests请求和进行response过滤。处理下载器之间的 请求与响应、和发出新的请求) 一般不用手写

(二)要用到的方法

一些方法 作 用
response.body 返回网页源代码,未解码
response.text 返回网页源代码,解码str形式
response.xpath(xpath路径) xapth路径,和普通xpath一样
scrapy.Request() 返回给下载器,翻页和爬详情页会用到 ,参数:callback回调函数、dont_filter=True,默认false去重,meta={‘item’:item}用来给回调函数传参

meta覆盖问题

  • 利用meta参数在进行不同的解析方法之间传递数据的时候,如果需要继续的交给调度器去请求,会出现item被覆盖的问题
  • 解决方案:1 用deepcopy 2 创建新的item对象

二、scrapy 的快速入门

(一)前期准备

第一步 先创建scrapy项目 (dos命令行 pycharm终端)

  • scrapy startproject mySpider(scrapy项目的名称)
scrapy startproject gsw

第二步 创建爬虫程序

  • scrapy genspider demo “demo.cn” (demo是你爬虫的名字 demo.cn 爬取的范围)
  • demo的名字最好不要和scrapy项目的名称重合
  • 记得切换工作环境 cd
scrapy genspider gs "gushiwen.cn"

第三步 运行scrapy的命令

  • 1 在终端 scrapy crawl 爬虫程序名字(例如db)
最低0.47元/天 解锁文章
基于scrapy框架采用异步高并发的方式抓取知乎千万用户信息
08-10
基于scrapy框架采用异步高并发的方式抓取知乎千万用户信息
异步爬虫提速实践-在Scrapy中使用Aiohttp/Trio
weixin_73725158的博客
11-27 829
在本文中,我将与大家分享如何在Scrapy中利用Aiohttp或Trio库实现异步爬取,以加快爬虫的速度。你已经成功使用Aiohttp或Trio库在Scrapy中实现了异步爬取。这样做将显著提升爬取速度,并使你的爬虫能够更高效地处理大量的并发请求。最后,在异步请求完成后进行相关处理。你可以根据需要在`parse_async_response`方法中进行解析和处理响应的HTML内容。- Aiohttp或Trio:两个流行的异步HTTP请求库,用于进行异步爬取。现在,我们已经完成了异步爬虫的配置和编写。
Scrapy爬虫异步框架(一篇文章齐全)
Python
11-26 2458
1、Scrapy框架初识2、Scrapy框架持久化存储(点击前往查阅)3、Scrapy框架内置管道(点击前往查阅)4、Scrapy框架中间件(点击前往查阅)Scrapy 是一个开源的、基于Python爬虫框架,它提供了强大而灵活的工具,用于快速、高效地提取信息。Scrapy包含了自动处理请求、处理Cookies、自动跟踪链接、下载中间件等功能。
一文搞定异步爬虫框架Scrapy环境的安装
qq_51447436的博客
08-14 9973
一文搞定异步爬虫框架Scrapy环境的安装
如何充分发挥 Scrapy异步能力【转载】
_B a OG 的博客
08-26 1730
作为一个易上手的高性能爬虫框架Scrapy 使用 Twisted 异步网络框架处理并发请求。 但是,在日常工作和面试过程中,经常发现有些同学会笃定地认为 Scrapy 采用的是多线程并发模型。实际上,虽 然 Twisted 框架提供了线程池支持,但是其核心网络部分处理逻辑依赖的是「单线程 IO 多路复用」技术,在 Linux 平台上,是围绕 epoll() 系统调用实现的 Reactor 模式。...
异步爬虫Scrapy框架
weixin_45620570的博客
02-05 959
scrapy异步框架核心原理 同步:下一个方法依赖于上一个方法的结果。 异步:下一个方法不依赖于上一个方法的结果。 spiders就是我们写的csdn的博客爬虫文件。scheduler是调度器,将url_s里所有的url地址统一分配,然后发给downloader,让它去向服务器请求下载。还有一个就是去重的功能,去掉重复的url请求。item pipeline用于把io存储,把数据存储到本地。...
爬虫(9) - Scrapy框架(1) | Scrapy 异步网络爬虫框架
pythonxxoo的博客
07-05 640
5个组件:2个中间件:Scrapy操作文档(中文的):https://www.osgeo.cn/scrapy/topics/spider-middleware.htmlcmd窗口,pip进行安装 Scrapy框架安装时常见的问题找不到win32api模块----windows系统中常见 实例: scrapy.cfg:项目的配置文件,定义了项目配置文件的路径等配置信息cd到spiders目录下,输出如下命令,生成爬虫文件: 方式一:cmd启动cd到spiders目录下,执行如下命令,启动爬虫: 方式二:py
Scrapy异步框架核心原理
Ducunyu的博客
11-20 1086
文章目录前言一、Scrapy框架是什么?二、Scrapy异步框架原理1.同步与异步的概念2.Scrapy异步框架原理总结 前言 Scrapy框架实现异步爬虫,提高效率 一、Scrapy框架是什么? Scrapy 的一种异步爬虫工具,该工具是为了解决爬取多个url地址实现异步爬取而创建的。 二、Scrapy异步框架原理 1.同步与异步的概念 2.Scrapy异步框架原理 ScrapyEngine:Scrapy引擎 Spiders:创建的爬虫文件 Scheduler:调度器,接收到spider的reques
第十一章 Scrapy入门:多线程+异步
weixin_47388144的博客
06-08 5923
简介 Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架。 用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片。 (提高请求效率) Scrapy 使用了Twisted(aiohttp)异步网络框架来处理网络通讯,可以加快下载速度,并且包含了各种中间件接口,可以灵活的完成各种需求。 安装 pip install --upgrade pip 建议首先更新pip 再安装下列依赖库 否则可能会遇到诸多错误: pip in.
基于PythonScrapy爬虫框架Scrapy-Redis分布式爬虫设计源码
最新发布
04-06
本资源提供了一套基于PythonScrapy爬虫框架Scrapy-Redis分布式爬虫的设计源码,包含61个文件,其中包括51个Python源代码文件,7个配置文件,以及1个Git忽略文件。此外,还包括1个文本文件和1个Markdown文档。...
scrapy&request_异步数据爬取_scrapy_
10-02
分别使用scrapy和request进行异步数据爬取
Python基于Scrapy-Redis分布式爬虫设计
11-04
程序采用 python 开发的 Scrapy 框架来开发,使用 Xpath 技术对下载的网页进行提取解析,运用 Redis 数据库做分布式, 设计并实现了针对当当图书网的分布式爬虫程序,scrapy-redis是一个基于redisscrapy组件,...
Python基于Scrapy-Redis分布式爬虫设计毕业源码(毕设项目).zip
06-08
程序采用 python 开发的 Scrapy 框架来开发,使用 Xpath 技术对下载的网页进行提取解析,运用 Redis 数据库做分布式, 设计并实现了针对当当图书网的分布式爬虫程序,scrapy-redis是一个基于redisscrapy组件,...
毕业设计 - 基于Scrapy-Redis分布式爬虫设计(python
04-04
程序采用 python 开发的 Scrapy 框架来开发,使用 Xpath 技术对下载的网页进行提取解析,运用 Redis 数据库做分布式, 设计并实现了针对当当图书网的分布式爬虫程序,scrapy-redis是一个基于redisscrapy组件,通过...
解析网页-selenium-非常实用-python爬虫知识点7
weixin_43761516的博客
05-21 2495
selenium的使用 一、引入 爬虫和反爬虫的斗争 二、selenium背景 静态网页与ajax动态加载 以前爬取的网页都是静态的网页 何为静态网页,其实就是我们向一个网站发起请求得到响应,那么这些响应的数据都是网页的源代码中,通过response就可以得到数据 除了静态网页,还有一些网站数数据不在这个请求得到url地址当中,那么这些护具有可能是通过ajax技术加载出来的数据,例如12306的班次的信息不在url中,查询的内容只是对网页的部分内容更新,这个就是ajax动态加载出来的 element是
爬虫前导知识-Http请求与响应-NetWork怎么看-python爬虫知识点1
weixin_43761516的博客
04-17 1287
一、网络编程基础 点这里 二、Http请求与响应 network分析网页的内容 通过浏览器向百度发出请求 wd=关键字 中文变16进制 在线进制转换 (90,0x5A) general 全部的: Request url request method status code 状态码 requ请求地址是否一致,动态不一样 请求方式:get post Response Hearder 服务端 Request Headers 客户端:VIEW SOURCE 源请求源视图 VIEW PARSRT 已分析视图 get
SSL证书解决无效证书问题 - cookie用法 - session - 突破验证码python爬虫知识点3
weixin_43761516的博客
04-25 794
int\string list tuple\dict\set 处理不信任的SSL证书 •SSL证书 数字证书的一种 遵守的是SSL协议 具有服务器身份验证和数据传输加密功能 证书风险:证书不被浏览器认可 解决方式: requests模块里面只需要设置一个参数 参数名 verify 参数值 true(默认)false SSLERROR这样一个异常 http升级https 要SSL证书,只要按照证书来传输 证书怎么拿到:自己开发(不被浏览器信任的)、或第三方认证机构 如果要访问一个证书风险的网址 request
爬虫网络请求模块-urllib-requests-python爬虫知识点2
weixin_43761516的博客
04-22 786
爬虫网络请求模块 urlib python内置的网络请求模块 为什么要学习这个模块 1.有些比较老的爬虫项目就是这个技术 2.有的时候我们去怕一些数据需要reque+urlib模块进行配合 3.内置的 发出请求 获取响应 解析响应 url=’’ response=requests.get(url) with open(‘photo.png’,‘rb’) as f: f.write(response.content) from urllib import requests request.urlretri
python scrapy-redis分布式爬虫
05-24
Scrapy-Redis是一个基于Scrapy框架分布式爬虫解决方案,它使用Redis作为分布式队列和去重集合,实现了多个爬虫节点共享一个Redis队列和去重集合,从而实现了高效的分布式爬取。 使用Scrapy-Redis,你可以很容易地将一个单机版的Scrapy爬虫转换成一个分布式爬虫。下面是简单的步骤: 1. 安装RedisScrapy-Redis 首先需要安装Redis,并且确保Redis服务正常运行。另外,需要安装Scrapy-Redis库,可以通过pip命令来进行安装: ``` pip install scrapy-redis ``` 2. 修改爬虫设置 在Scrapy爬虫的settings.py文件中,需要添加如下配置: ``` # 启用Redis调度器 SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 启用Redis去重过滤器 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" # 设置Redis为调度器和去重过滤器的数据存储位置 REDIS_URL = 'redis://localhost:6379' ``` 3. 修改爬虫代码 在Scrapy爬虫的代码中,需要将原来的start_urls修改为redis_key,例如: ``` class MySpider(RedisSpider): name = 'myspider' redis_key = 'myspider:start_urls' ``` 另外,需要将原来的parse方法改为如下形式: ``` def parse(self, response): # 爬虫代码 yield scrapy.Request(url, callback=self.parse_item) ``` 4. 运行爬虫 在启动爬虫之前,需要先往Redis队列中添加起始URL,例如: ``` redis-cli lpush myspider:start_urls http://www.example.com ``` 然后在命令行中启动分布式爬虫,例如: ``` scrapy crawl myspider ``` 这样就可以启动一个分布式Scrapy爬虫了。在多个爬虫节点共享同一个Redis队列和去重集合的情况下,可以大大提高爬取效率和速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 解析网页-selenium-非常实用-python爬虫知识点7 2495
  • 一、计算机基础 2288
  • 8Flask-----------Flask框架------------安装使用、基本介绍 2263
  • 简单抢铁路票代码-selenium 1969
  • 百度贴吧帖子爬取 -正则表达式 - BeautifulSoup - selenium - python爬虫 1901

分类专栏

  • python爬虫知识 10篇
  • web全栈开发知识 50篇
  • 数据库 19篇
  • 计算机知识点 7篇
  • python总结 12篇
  • python项目练习 10篇
  • powerbi 1篇
  • 练习题 1篇

最新评论

  • 7Vue---------------Vue网页开发------------------全栈式开发48

    CSDN-Ada助手: 为什么React 要提供 React Hooks 这种组件,普通的Component类不好么?

  • 8Flask-----------Flask框架------------安装使用、基本介绍

    Passerby_Wang: 写得也太详细了吧,学到了好多 也欢迎博主来我这里指点一二呀表情包表情包表情包

  • 爬虫前导知识-Http请求与响应-NetWork怎么看-python爬虫知识点1

    zkzap: network只能看自己电脑到服务器的请求信息?

  • 一、计算机基础

    鲍金昌: 写的鞭辟入里,学到了很多,感谢博主分享

  • 简单抢铁路票代码-selenium

    洋芋本人: 是不是没有加浏览器驱动,driver = webdriver.Chrome()

大家在看

  • 基于Selenium对动态页面的数据进行采集(附滑动验证码解决办法) 111
  • Agent思维过程样例 315
  • 如何在 Golang 程序中实现对 Vue.js 单页应用路由支持
  • 【CTF Web】CTFShow web13 Writeup(PHP+文件上传+RCE)
  • 刷机维修进阶教程------更换字库 刷机了解分区结构 关键分区刷写 指纹修复的基础常识 高通分区

最新文章

  • 二、深入理解计算机系统 第一章 计算机系统漫游
  • 一、计算机基础
  • 9Django-----------Django框架------------安装使用、基本介绍
2022年2篇
2021年84篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋芋本人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司阿坝网站优化软件泉州网站设计推荐临沂企业网站改版哪家好海西百度网站优化排名哪家好清远seo优化报价榆林建设网站哪家好广州seo网站推广推荐垦利网站排名优化报价海北百搜标王公司爱联网站搜索优化价格朝阳seo崇左网络推广威海网络推广报价庆阳网站设计报价襄樊百度标王推荐诸城网页制作价格成都设计公司网站绍兴品牌网站设计价格和田SEO按效果付费报价韶关SEO按天收费多少钱聊城高端网站设计哪家好南通企业网站制作推荐衡阳关键词排名包年推广哪家好焦作seo网站优化报价张北百搜标王多少钱宝鸡seo排名价格哈密英文网站建设价格固原百度网站优化排名多少钱红河网站搜索优化淮安网页设计多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化