范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Python编程基础之(五)Scrapy爬虫框架

  经过前面四章的学习,我们已经可以使用Requests库、Beautiful Soup库和Re库,编写基本的Python爬虫程序了。那么这一章就来学习一个专业的网络爬虫框架--Scrapy。没错,是框架,而不是像前面介绍的函数功能库。先来了解一下Scrapy:
  Scrapy是一个快速、功能强大的网络爬虫框架。
  可能大家还不太了解什么是框架,爬虫框架其实是实现爬虫功能的一个软件结构和功能组件的集合。
  简而言之,Scrapy就是一个爬虫程序的半成品,可以帮助用户实现专业的网络爬虫。
  使用Scrapy框架,不需要你编写大量的代码,Scrapy已经把大部分工作都做好了,允许你调用几句代码便自动生成爬虫程序,可以节省大量的时间。
  当然,框架所生成的代码基本是一致的,如果遇到一些特定的爬虫任务时,就不如自己使用Requests库搭建来的方便了。Scrapy框架的安装
  PyCharm安装pip3 install scrapy
  测试安装:scrapy -h
  出现框架版本说明安装成功。Scrapy爬虫框架结构
  掌握Scrapy爬虫框架的结构是使用好Scrapy的重中之重!
  先上图:
  Scrapy框架结构
  整个结构可以简单地概括为:"5+2"结构和3条数据流
  5个主要模块(及功能):Engine(无需用户配置)
  (1)控制所有模块之间的数据流。
  (2)可以根据条件触发事件。Downloader(无需用户配置)
  (1)根据请求下载网页。Scheduler(无需用户配置)
  (1)对所有爬取请求进行调度管理。Spider(需用户配置)
  (1)解析DOWNLOADER返回的响应--response。
  (2)产生爬取项--scraped item。
  (3)产生额外的爬取请求--request。Item Pipelines(需用户配置)
  (1)以流水线方式处理SPIDER产生的爬取项。
  (2)由一组操作顺序组成,类似流水线,每个操作是一个ITEM PIPELINES类型。
  (3)清理、检查和查重爬取项中的HTML数据并将数据存储到数据库中。
  Scrapy框架结构
  2个中间键:Downloader Middleware(用户可以配置)
  (1)对Engine、Scheduler、Downloader之间进行用户可配置的控制。
  (2)修改、丢弃、新增请求或响应。Spider Middleware(用户可以配置)
  (1)对请求和爬取项进行再处理。
  (2)修改、丢弃、新增请求或爬取项。
  Scrapy框架结构
  3条数据流:
  (1):图中数字 1-2
  1:Engine从Spider处获得爬取请求--request。
  2:Engine将爬取请求转发给Scheduler,用于调度。
  (2):图中数字 3-4-5-6
  3:Engine从Scheduler处获得下一个要爬取的请求。
  4:Engine将爬取请求通过中间件发送给Downloader。
  5:爬取网页后,Downloader形成响应--response,通过中间件发送给Engine。
  6:Engine将收到的响应通过中间件发送给Spider处理。
  (3):图中数字 7-8-9
  7:Spider处理响应后产生爬取项--scraped item。
  8:Engine将爬取项发送给Item Pipelines。
  9:Engine将爬取请求发送给Scheduler。
  任务处理流程:从Spider的初始爬取请求开始爬取,Engine控制各模块数据流,不间断从Scheduler处获得爬取请求,直至请求为空,最后到Item Pipelines存储数据结束。Scrapy爬虫常用命令
  作为用户,只需配置好Scrapy框架的Spider和Item Pipelines,也就是数据流的入口与出口,便可完成一个爬虫程序的搭建。Scrapy提供了简单的爬虫命令语句,帮助用户一键配置剩余文件,那我们便来看看有哪些好用的命令吧。
  Scrapy采用命令行创建和运行爬虫
  PyCharm打开Terminal,启动Scrapy:scrapy -h
  Scrapy基本命令行格式:scrapy  [options] [args]
  具体常用命令如下:
  Scrapy常用命令
  下面用一个例子来学习一下命令的使用:
  1.建立一个Scrapy爬虫工程,在已启动的Scrapy中继续输入:scrapy startrptoject pythonDemo
  执行该命令,系统会在PyCharm的工程文件中自动创建一个工程,命名为pythonDemo。
  目录结构
  2.产生一个Scrapy爬虫,以教育部网站为例http://www.moe.gov.cn:scrapy genspider demo www.moe.gov.cn
  命令生成了一个名为demo的spider,并在Spiders目录下生成文件demo.py。
  命令仅用于生成demo.py文件,该文件也可以手动生成。
  观察一下demo.py文件:import scrapy   class DemoSpider(scrapy.Spider):     name = "demo"     allowed_domains = ["www.moe.gov.cn"]     start_urls = ["http://www.moe.gov.cn/"]      def parse(self, response):         pass
  3.配置产生的spider爬虫,也就是demo.py文件:import scrapy   class DemoSpider(scrapy.Spider):     # 爬虫的名字     name = "demo"     # 用户提交的初始域名,爬虫只能爬取域名下的HTML网页     allowed_domains = ["www.moe.gov.cn"]     # 爬取的开始页面,这里修改成需要爬取的页面即可     start_urls = ["http://www.moe.gov.cn/jyb_xwfb/moe_2082/2021/2021_zl46/202108/t20210816_551472.html"]          # parse()用户处理响应、解析内容形成字典、发现新的url爬取请求     def parse(self, response):         # 以"/"切片,用最后一个元素作为文件名         fname = response.url.split("/")[-1]         # 读取HTML文件,写入本地文件         with open(fname, "wb") as f:             f.write(response.body)         # 保存日志         self.log("Save file %s." % fname)
  4.运行爬虫,爬取网页:scrapy crawl demo
  如果爬取成功,会发现在pythonDemo下多了一个t20210816_551472.html的文件,我们所爬取的网页内容都已经写入该文件了。
  以上就是Scrapy框架的简单使用了。Scrapy爬虫数据类型Request类
  Request对象表示一个HTTP请求,由Spider生成,由Downloader执行。
  Request类Response类
  Response对象表示一个HTTP响应,由Downloader生成,有Spider处理。
  Response类Item类
  Item对象表示一个从HTML页面中提取的信息内容,由Spider生成,由Item Pipelines处理。Item类似于字典类型,可以按照字典类型来操作。

2022。5。3iOS今日限免推荐今天带来六款限免软件,快来看看是否有你需要的吧一全能记无内购介绍有很多碎片化信息不知道记录在哪里?这个应用让你随时随地,记录你的备忘提醒,文字,图片,语音,视频和定位。并且通过搜索元宇宙视界崛起于智能制造,环旭电子将要火于元宇宙?4月28日,元宇宙板块整体跌幅2。86,但板块多只龙头股表现出抗跌性,甚至还出较大幅度上涨,包括环旭电子歌尔股份德必集团完美世界捷成股份,涨幅分别为10。0310。008。365。天玑8100手机怎么选?这3款配置高有低,对比后就知道了今年天玑8100芯片非常受欢迎,优秀的性能和更低的功耗,关键是价格还都不贵,在2000元左右性价比非常高。目前天玑8100的手机也发布了多款,那么天玑8100手机该怎么选呢?3款手骁龙778G144Hz高刷,入手仅需1299元,这款手机中端芯低端价随着科技的发展,高刷新率已然成为了大部分手机的标配,甚至只需花上百元的价格,就可以体验到最基础的高刷功能,而目前市面上主流的高刷频率大多为120Hz,虽然在日常使用上120Hz刷新超薄安静当然便携双飞燕飞时代剪牙脚蓝牙键盘FBX51C使用简评经常出差背个笔记本,随时准备码字,怎么能少了外置键盘呢?家里体型厚重的机械键盘肯定是不合适的,俗话说得好,工欲善其事,必先利其器,这时,一个体积小巧便携的无线蓝牙键盘是我出差的最优机构全球氢能电动汽车第一季度销量3939辆同比减少2。7机构全球氢能电动汽车第一季度销量3939辆同比减少2。7财联社5月3日电,据市场调研机构SNEResearch公司3日发布的数据显示,今年第一季度,全球氢能电动汽车销量为3939辆MySQL的备份与还原,非常规备份,全量备份,增量备份一测试数据库的创建1官方百万级别的测试数据库官方测试数据库github网址httpsgithub。comdatacharmertestdb下载到目录,解压即可,运行命令mysqlu华为手机销量跌出排行榜,一季度全球手机排名出炉随着2022年第一季度的结束,手机圈也到了公布数据的时候,近日StrategyAnalytics发布了2022年第一季度全球智能手机出货量数据,近两年来,手机销量榜的变化可太大了。512G配置差价200元,vivoX80Pro和荣耀magic4Pro怎么选?vivoX80Pro和荣耀magic4Pro同为旗舰机,在内卷如此严重的情况下,可以说二者配置已经相当水桶,但细节上还是存在不小差异的。加之vivoX80Pro这次也出了天玑90094年,现在一无所有,而且还是负债累累迷茫的很不知道该怎么办?给您讲一个罗永浩的故事,2012年,罗永浩创办了锤子科技。从2018年下半年开始,锤子科技的危机爆发,锤子科技最多时欠了银行合作伙伴和供应商约6个亿的债务。而他签了个人无责任担保的印度冻结小米48亿资产之后,为什么很多原来不看好小米的人都开始支持小米了?(原创)被印度冻结48亿资产,说明小米很有实力,这是我国民族工业的骄傲,印度冻结小米资产之举变相为小米作了很好的广告,支持小米的人能不多起来吗?支持民族品牌,就是爱国!首先昂贵的外
互联网新业态,后厨卫生情况现场直播?一阳光厨房行业建设背景餐饮服务后厨是食品生产经营链的最后一个环节,量大点多分散经营者素质良莠不齐,因此,加强社会监督是对餐饮企业实施有效监管地必然路径。阳光厨房的推进核心是社会监督为什么五一只身出去嗨,我只带这几样东西南方已经迫不及待地进入夏天了,而对于即将到来的五一小长假,没有什么比离开喧嚣的城市,一个人去走走来的更加惬意了。当然了,作为科技宅男,出门也要做好万全的准备,下边的这些装备是必不可年轻人的第一款定制耳塞?HelloEarArc体验评测对耳机略有要求的朋友应该都有一个疑问,无论买的什么品牌什么价位的耳塞经过长时间佩戴后,总感觉耳道隐隐作痛发痒等各种问题。一方面,这根耳塞所采用的材质有很大的关系,另一方面,我们买的浙江神秘富豪,背靠特斯拉而崛起,大赚95亿财富浙江又一神秘富豪出现白手起家,背靠特斯拉,大赚95亿财富推荐语汽车零部件是构成汽车配件加工整体的各单元及服务于汽车配件加工的产品,随着经济和全球市场一体化进程的推进,汽车零部件产业那天服务器内存被Java线程撑爆了,简单的JVM问题诊断流程话说那天中午吃饭的时候,一个同事说那个项目组的人快气死我了,程序有问题,早晨在群里了他们,到中午才回消息,然后竟然还说他们的程序没有问题,是我们这边调用的太频繁了。简直想笑。一般来线上Bug无法复现怎么办?教你一招,SpringBoot远程调试不用愁!前言在部署线上项目时,相信大家都会遇到一个问题,线上的Bug但是在本地不会复现,多么无奈。此时最常用的就是取到前端传递的数据用接口测试工具测试,比如POSTMAN,复杂不,难受不?那天服务器内存被Java线程撑爆了,简单的JVM问题诊断流程话说那天中午吃饭的时候,一个同事说那个项目组的人快气死我了,程序有问题,早晨在群里了他们,到中午才回消息,然后竟然还说他们的程序没有问题,是我们这边调用的太频繁了。简直想笑。一般来我用起来顺手的数据库设计工具,这次推荐给大家!摘要好的数据库设计工具,可以帮助我们进行思考并提高我们的设计效率。以前一直使用的是PowerDesigner,最近发现Navicat的数据库设计功能也很不错,界面简洁且容易使用,特用了这么多年的泛型,你对它到底有多了解?现代程序员写代码没有人敢说自己没用过泛型,这个泛型模板T可以被任何你想要的类型替代,确实很魔法很神奇,很多人也习以为常了,但就是这么有趣的泛型T底层到底是怎么帮你实现的,不知道有多高级程序员必备Linux核心技能!资深架构师分享Linux深度解析文档不会Linux,干啥都费劲!资深程序员这比努力重要1000倍!学习过Linux都知道,它不像Windows是靠鼠标点击操作,而是靠指令和参数进行操控。如果你没系统的学习过它,那么工MySQL中orderby语句的实现原理以及优化手段相信很多人在面试过程中,总被问到有没有SQL调优经验,对于工作经验年限较少的求职者,通常都是在面试之前从网上百度一些答案,提前背熟,然后面试的时候直接将提前背好的答案说出来。笔者作