电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

《Python网络爬虫技术案例教程》PPT课件(共10单元)八单元爬虫框架Scrapy

46页
  • 卖家[上传人]:sat****105
  • 文档编号:264193779
  • 上传时间:2022-03-10
  • 文档格式:PPTX
  • 文档大小:1.34MB
  • / 46 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、爬虫框架Scrapy本章导读8第章虽然利用前面所学知识也可以实现爬虫的全部流程,但是当遇到需要爬取的网页较多、数据量较大时,使用框架可以让爬虫程序更强大、更高效。本章从网络爬虫框架Scrapy的构成入手,介绍Scrapy的应用方法,包括如何创建项目、修改items脚本、创建spider脚本、修改settings脚本、运行爬虫程序、修改pipelines脚本和定制Middleware等内容。学习目标8第章 理解Scrapy框架的构成。 掌握使用Scrapy框架创建爬虫程序获取所需数据的方法。 能使用Scrapy框架编写爬虫程序爬取网站数据。目录录CONTENT028 . 2 S c r a p y 应应 用018 . 1 S c r a p y 框 架图8-1 Scrapy框架Scrapy是目前Python中使用最广泛的爬虫框架,用于爬取网站数据,提取结构性的数据。简单来说,Scrapy是一个半成品,相关扩展组件多,可配置和可扩展程度非常高,可以帮助用户简单快速地实现一个网络爬虫。Scrapy框架由7个组件构成,如图8-1所示:8 . 1 S c r a p y 框 架组件功能Engin

      2、e(引擎)负责处理系统的数据流、触发事务,是整个框架的核心Scheduler(调度器)负责处理所有的Request,并按照一定的方式将其进行整理、排列和入队。此外,Scheduler可以自动去除重复的URL,如果特定Request的URL不需要去重也可以通过设置实现,如POST请求Downloader(下载器)负责下载网页内容Spider负责解析所有的Response,提取Item所需的数据和新的URL。用户可以在一个项目中编写多个Spider,每个负责处理一个特定(或一些)网站Item Pipeline(项目管道)负责处理Item,常见的处理有清理、验证和存储数据等Downloader Middleware(下载中间件)位于Engine和Downloader之间,可以自定义扩展下载功能,如自动更换User-Angent、设置代理IP等Spider Middleware(Spider中间件)位于Engine和Spider之间,可以自定义扩展Engine和Spider间通信的功能8 . 1 S c r a p y 框 架8 . 1 S c r a p y 框 架在Scrapy中由Engi

      3、ne控制数据流,其工作的基本步骤如下:(1)Engine从Spider获取初始爬取列表的Request。(5)当网页下载完毕,Downloader生成该网页的Response,并将其通过Downloader Middleware提交给Engine。(2)Engine将要爬取的Request发送给Scheduler,通过Scheduler进行调度。(3)Engine向Scheduler获取下一个要爬取的Request。(4)Engine将Request通过Downloader Middleware发送给Downloader。(9)重复第(2)(8)步,直到Scheduler中没有Request,Engine关闭该爬虫程序,爬取结束。(6)Engine将接收到Response通过Spider Middleware发送给Spider处理。(7)Spider解析响应,提取Item所需的数据和新的URL,并将Item和新的Request通过Spider Middleware提交给Engine。(8)Engine将Item发送给Item Pipeline,将新的Request发送给Schedule

      4、r。Python提供scrapy库实现Scrapy爬虫框架,scrapy库不是Python内置的标准库,使用之前需要安装,安装方法与requests库的安装类似(请参考2.3.2节),此处不再赘述。本节以创建BaiduSpider项目为例,介绍使用Scrapy框架编写爬虫程序的过程。8 . 2 S c r a p y 应应 用Scrapy应用scrapy库提供了startproject命令用于创建一个爬虫项目,其语法格式如下:8 . 2 S c r a p y 应应 用8.2.1 创建项目scrapy startproject project_dir(1)project_name:表示创建的爬虫项目名称。(2)project_dir:表示存放爬虫项目的路径。指定该参数后,会在project_dir目录下生成一个名为project_name的文件夹;如果不指定该参数,则将在命令执行路径下生成。Scrapy的命令须通过命令行运行,在PyCharm中,可以通过Terminal窗口来运行。例如,在“D:PycharmProjects第8章”下,创建一个名为“BaiduSpider”的爬虫项目,

      5、其过程为:启动Pycharm,在界面的下方单击“Terminal”按钮,然后在打开的Terminal窗口中切换至“D:PycharmProjects第8章”,输入“scrapy startproject BaiduSpider”命令并运行,如图8-2所示。8 . 2 S c r a p y 应应 用8.2.1 创建项目图8-2 创建“BaiduSpider”爬虫项目项目目录结构创建项目后,在“D:PycharmProjects第8章”下会生成一个名为“BaiduSpider”的文件夹,其目录结构见图8-2。其中每个文件的功能如表8-1所示。8 . 2 S c r a p y 应应 用8.2.1 创建项目表8-1 Scrapy爬虫项目的文件功能文 件说 明spiders创建Scrapy项目后自动创建的一个文件夹,用于存放用户编写的spider脚本,每一个脚本都是一个文件_init_.py空文件,将其上级目录变成一个模块items.py定义Item中数据的结构,可以包含多个Itemmiddlewares.py根据需求定义Downloader Middleware和Spider Middle

      6、ware,可以包含多个Middlewarepipelines.py根据需求定义Pipeline,可以包含多个Pipelinesettings.py定义项目的全局变量scrapy.cfgScrapy项目的配置文件,定义项目的配置文件路径、部署相关信息等scrapy库提供Item对象来实现将爬取到的数据转换成结构化数据的功能。实现方法是定义Item类(继承scrapy.Item类),并定义类中的数据类型为scrapy.Filed字段。BaiduSpider项目中items脚本的模板如图8-3所示。8 . 2 S c r a p y 应应 用8.2.2 修改items脚本图8-3 items脚本模板BaiduSpider项目爬取的目标是百度首页热榜新闻,包括排名、标题、链接和搜索结果个数。根据项目目标,重新定义Item,在items.py中添加如下代码:8 . 2 S c r a p y 应应 用8.2.2 修改items脚本class NewsItem(scrapy.Item):#定义NewsItem类 index = scrapy.Field()#定义排名 title = scrapy.

      7、Field()#定义标题 link = scrapy.Field()#定义链接newsNum = scrapy.Field()#定义搜索结果个数scrapy库提供了genspider命令用于创建一个spider脚本,其语法格式如下:8 . 2 S c r a p y 应应 用8.2.3 创建spider脚本scrapy genspider template 表示创建模板的类型,缺省则使用默认模板template表示要爬取网站的域名domain表示创建的spider脚本名称,创建后会在spiders目录下生成一个以name命名的.py文件name8 . 2 S c r a p y 应应 用8.2.3 创建spider脚本在BaiduSpider项目中创建一个爬取百度首页热榜新闻的spider脚本,命名为news,域名为,其过程为:输入“cd BaiduSpider”命令并运行,切换到“BaiduSpider”目录下;然后输入“scrapy genspider news ”命令并运行,创建一个spider脚本,如图8-4所示。图8-4 创建spider脚本8 . 2 S c r a p y

      8、 应应 用8.2.3 创建spider脚本创建spider脚本后,在spiders目录下生成了一个名为“news.py”的文件,其模板见图8-4。在该文件中定义了一个NewsSpider类,其中包含三个属性和一个方法,它们的说明如下。在同一个项目中,名字是唯一的,用来区分不同的spidernamespider初始爬取的URL列表,可以根据需要编辑或添加start_urls允许爬取的域名,如果初始或后续请求的URL不是这个域名下的,则请求会被过滤掉,可以根据需要编辑或添加allowed_domains解析返回的响应,提取数据或新的URL,response是请求start_urls后返回的响应parse(self,response)由于scrapy库支持CSS选择器、XPath选择器和正则表达式,所以解析响应时可以调用xpath()、css()等方法提取数据。调用方法后返回的数据是SelectorList类型,并不是真正的文本内容。此时,可以使用extract()方法(返回列表)或extract_first()方法(返回列表的第一个元素)来提取所需数据。8 . 2 S c r a p y

      9、应应 用8.2.3 创建spider脚本Request(url,callback,method=GET,headers,body,cookies,meta,encoding=utf-8,priority=0,dont_filyer=False,errback,flags)如果想要请求新的URL,Scrapy可以调用Request()方法来实现,其语法格式如下:8 . 2 S c r a p y 应应 用8.2.3 创建spider脚本其中常用的参数及说明如表8-2所示。表8-2 Request方法常用的参数及说明参 数说 明url接收str,表示请求的网址,无默认值callback接收同一个类中的方法,表示回调的方法,解析该请求返回的响应,未指定则继续调用parse方法,无默认值method 接收str,表示请求的方法,默认为“GET”headers 接收str、dict和list,表示请求头,无默认值cookies接收list和dict,表示请求的cookies,无默认值meta接收dict,表示Request.meta属性的初始值,如果指定了该参数,dict将会浅拷贝,无默认值8

      10、. 2 S c r a p y 应应 用8.2.3 创建spider脚本在BaiduSpider项目中,实现news爬虫的过程如下:(1)在parse()方法中提取百度首页热榜新闻的排名、标题和链接,并写入NewsItem类的对象中;然后调用Scrapy.Request()方法请求新的链接,并使用callback参数指定回调方法为parse_newsnum,使用meta参数在两个解析方法之间传递NewsItem类的对象。(2)定义parse_newsnum()方法,解析请求新的链接返回的响应,提取每条新闻的搜索结果数,并写入NewsItem类的对象中。8 . 2 S c r a p y 应应 用8.2.3 创建spider脚本news.py修改后的代码如下(详情见P202P203):import scrapy#导入scrapy模块#导入items模块中的NewsItem类from BaiduSpider.items import NewsItemfrom copy import deepcopy#导入deepcopy模块class NewsSpider(scrapy.Spider):#

      《《Python网络爬虫技术案例教程》PPT课件(共10单元)八单元爬虫框架Scrapy》由会员sat****105分享,可在线阅读,更多相关《《Python网络爬虫技术案例教程》PPT课件(共10单元)八单元爬虫框架Scrapy》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.