«

python3中scrapy框架执行流程是怎样的

时间:2024-3-28 09:13     作者:韩俊     分类: Python


本篇内容介绍了“python3中scrapy框架执行流程是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

scrapy框架概述:Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

创建项目

由于pycharm不能直接创建scrapy项目,必须通过命令行创建,所以相关操作在pycharm的终端进行:
1、安装scrapy模块:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scrapy

2、创建一个scrapy项目:scrapy startproject test_scrapy
4、生成一个爬虫:scrapy genspider itcast "itcast.cn”
5、提取数据:完善spider,使用xpath等方法
6、保存数据:pipeline中保存数据

常用的命令

创建项目:scrapy startproject xxx
进入项目:cd xxx #进入某个文件夹下
创建爬虫:scrapy genspider xxx(爬虫名) xxx.com (爬取域)
生成文件:scrapy crawl xxx -o xxx.json (生成某种类型的文件)
运行爬虫:scrapy crawl XXX
列出所有爬虫:scrapy list
获得配置信息:scrapy settings [options]

Scrapy项目下文件

scrapy.cfg: 项目的配置文件
test_scrapy/: 该项目的python模块。在此放入代码(核心)
test_scrapy/items.py: 项目中的item文件.(这是创建容器的地方,爬取的信息分别放到不同容器里)
test_scrapy/pipelines.py: 项目中的pipelines文件.
test_scrapy/settings.py: 项目的设置文件.(我用到的设置一下基础参数,比如加个文件头,设置一个编码)
test_scrapy/spiders/: 放置spider代码的目录. (放爬虫的地方)

scrapy框架的整体执行流程

1.spider的yeild将request发送给engine
2.engine对request不做任何处理发送给scheduler
3.scheduler,生成request交给engine
4.engine拿到request,通过middleware发送给downloader
5.downloader在获取到response之后,又经过middleware发送给engine
6.engine获取到response之后,返回给spider,spider的parse()方法对获取到的response进行处理,解析出items或者requests
7.将解析出来的items或者requests发送给engine
8.engine获取到items或者requests,将items发送给ItemPipeline,将requests发送给scheduler(ps,只有调度器中不存在request时,程序才停止,及时请求失败scrapy也会重新进行请求)

关于yeild函数介绍

简单地讲,yield 的作用就是把一个函数变成一个 generator(生成器),带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,带有yeild的函数遇到yeild的时候就返回一个迭代值,下次迭代时, 代码从 yield 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行, 直到再次遇到 yield。

通俗的讲就是:在一个函数中,程序执行到yield语句的时候,程序暂停,返回yield后面表达式的值,在下一次调用的时候,从yield语句暂停的地方继续执行,如此循环,直到函数执行完。

标签: python

热门推荐