python3 scrapy框架的执行流程

作者:百里 Jess 时间:2022-04-12 08:53:35 

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代码的目录. (放爬虫的地方)

python3 scrapy框架的执行流程

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语句暂停的地方继续执行,如此循环,直到函数执行完。

来源:https://blog.csdn.net/weixin_43846708/article/details/118542064

标签:python3,scrapy,框架
0
投稿

猜你喜欢

  • asp数组使用特法

    2009-05-11 12:43:00
  • SQL Server各种日期计算方法

    2008-09-11 21:47:00
  • 百度地图API之本地搜索与范围搜索

    2023-08-23 17:24:38
  • 写了一个小巧的jquery拾色工具

    2009-12-21 14:22:00
  • ASP+FSO生成的网页文件默认编码格式以及转换成UTF-8编码方法

    2011-03-07 11:10:00
  • 如何让新页面在新窗口打开?

    2009-04-12 19:41:00
  • PHP截取指定图片大小的方法

    2023-09-11 13:20:21
  • ASP编写计数器的优化方法

    2009-01-21 19:46:00
  • 又一个仿alert提示效果

    2007-12-24 17:34:00
  • 如何利用python读取图片属性信息

    2023-12-24 00:57:51
  • Golang库插件注册加载机制的问题

    2023-06-24 04:25:59
  • ASP 游标参数详解(ASP记录集)第1/2页

    2011-04-08 11:04:00
  • MySQL 重装笔记

    2011-02-23 12:22:00
  • 从8个方面优化ASP代码

    2007-09-16 18:01:00
  • MySQL索引类型一览 让MySQL高效运行起来

    2010-04-22 16:52:00
  • 几个常用的js小函数

    2007-09-19 12:59:00
  • ORCLE 表中列的修改

    2009-07-28 10:42:00
  • 用一条SQL实现:一行多个字段数据的最大值

    2008-12-31 13:37:00
  • asp源码实现Access数据库的建立或压缩

    2007-08-06 16:54:00
  • golang解析网页利器goquery的使用方法

    2023-10-13 06:36:12
  • asp之家 网络编程 m.aspxhome.com