当前位置: 首页 > 后端技术 > Python

scrapy介绍

时间:2023-03-25 21:21:24 Python

scrapy框架的绿色箭头是数据的流向。各模块功能如下:Spiders:爬虫,定义了爬取逻辑和网页内容的分析规则,主要负责解析响应并产生结果和新的请求;Engine:引擎,框架的核心,负责整个系统的数据流处理;Scheduler:调度器,接受引擎发送的请求,并加入到队列中,当引擎再次请求时,将请求提供给引擎;Downloader:下载器,下载网页内容,并将下载的内容返回给蜘蛛;ItemPipeline:项目管道,负责处理爬虫从网页中提取的数据,主要负责数据库中数据的清洗、校验和存储;DownloaderMiddlewares:下载中间件,在Scrapy的Request和Requestponse之间的处理模块;SpiderMiddlewares:蜘蛛中间件,介于引擎和蜘蛛之间的框架,主要处理蜘蛛输入的响应、输出结果和新的请求;scrapy框架的整体执行流程如下:1.蜘蛛的Yield向引擎发送请求;2、引擎不处理请求,发送给调度器;3、调度器生成请求,发送给引擎;4.引擎拿到请求,通过中间件发送给下载器;5、下载器得到响应后,通过中间件发送给引擎;6.引擎得到response后返回给spider。蜘蛛的parse()方法处理响应并解析出项目或请求;7.将解析后的项目或请求发送给引擎;8.引擎获取项目或请求,将项目发送到ItemPipeline,并将请求发送到调度程序;安装和安装scrapy的常用命令$sudopip3installscrapy几个常用命令:创建项目:scrapystartprojectxxx创建爬虫:scrapygenspiderxxxxxx.com生成某种类型的文件:scrapycrawlxxx-oxxx.json运行爬虫:破烂不堪wlxxx列出所有爬虫:scrapylist获取配置信息:scrapysettings[options]爬虫示例创建项目:$scrapystartprojecttutorial项目目录功能如下:scrapy.cfg:项目配置文件tutorial/:项目的python模块tutorial/items.py:项目中的item文件,这里是创建容器的地方,爬取到的信息放在不同的容器中;tutorial/pipelines.py:项目中的pipelines文件;tutorial/middlewares.py:定义DownloaderMiddlewares(下载器中间件)和SpiderMiddlewares(蜘蛛中间件);tutorial/settings.py:项目设置文件;tutorial/spiders/:放置蜘蛛代码的目录;containerdefinition:importscrapyclassMaoyanItem(scrapy.Item):#为需要抓取的内容创建一个容器index=scrapy.Field()title=scrapy.Field()在spiders文件夹下创建一个maoyan.py文件,进入以下内容:#-*-coding:utf-8-*-importscrapyfromtutorial.itemsimportMaoyanItemclassMaoyanSpider(scrapy.Spider):#爬虫唯一标识,不可重复,启动时使用name="maoyan"thecrawler#限制域名,只抓取该域名下的网页allowed_domains=["maoyan.com"]#开始抓取链接start_urls=["https://maoyan.com/board/7/"]defparse(self,response):dl=response.css('.board-wrapperdd')forddindl:item=MaoyanItem()item['index']=dd.css('.board-index::text').extract_first()item['title']=dd.css('.namea::text').extract_first()产量itemname:项目名称allowed_domains:允许抓取的域名。比如有些网站有相关链接,域名和本站不一样,这些都会被忽略。start_urls:是Spider爬取的网站,定义了初始请求url,可以是多个。解析方法:是Spider的一个方法。请求start_url后,它会从网页中解析并提取您想要的内容。parse方法有两个作用:1、负责解析start_url下载的Response对象,并根据item提取数据;2、如果有新的url,会被加入到爬取队列中做进一步处理。response参数:是请求网页后返回的内容,即需要解析的网页。启动爬虫:$scrapycrawlmaoyanScrapy在Spider的start_urls属性中为每个url创建一个Request对象,并将parse方法作为回调函数赋值给requests,requests对象被调度器调度执行并生成response对象并发送回parse()方法用于解析,所以请求链接的改变是通过回调函数实现的。参考pip升级后的文章导入报错:无法导入名称mainSolutionsScrapy官方文档Scrapy框架安装及基本使用