scrapy框架爬虫

一、什么是scrapy?

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

其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 后台也应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫.

Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持.

二、Scrapy五大基本构成:
Scrapy框架主要由五大组件组成,它们分别是调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)和实体管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。下面我们分别介绍各个组件的作用。

(1)、调度器(Scheduler):

调度器,说白了把它假设成为一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是 什么,同时去除重复的网址(不做无用功)。用户可以自己的需求定制调度器。

(2)、下载器(Downloader):

下载器,是所有组件中负担最大的,它用于高速地下载网络上的资源。Scrapy的下载器代码不会太复杂,但效率高,主要的原因是Scrapy下载器是建立在twisted这个高效的异步模型上的(其实整个框架都在建立在这个模型上的)。

(3)、 爬虫(Spider):

爬虫,是用户最关心的部份。用户定制自己的爬虫(通过定制正则表达式等语法),用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。 用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。

(4)、 实体管道(Item Pipeline):

实体管道,用于处理爬虫(spider)提取的实体。主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。

(5)、Scrapy引擎(Scrapy Engine):

Scrapy引擎是整个框架的核心.它用来控制调试器、下载器、爬虫。实际上,引擎相当于计算机的CPU,它控制着整个流程

三、scrap框架架构图

scrapy框架爬虫

四、Scrapy安装以及生成项目

1、安装scrapy框架所需jar包:

打开终端cmd,依次执行如面几条指令:

python -m pip install --upgrade pip

  pip install wheel

  pip install lxml

  pip install twisted

  pip install pywin32

  pip install scrapy

2、创建项目

scrapy startproject 项目名

  scrapy genspider 爬虫名 域名

  scrapy crawl 爬虫名

工程目录:

|-ProjectName #项目文件夹

  |-ProjectName #项目目录

    |-items.py #定义数据结构

    |-middlewares.py #中间件

    |-pipelines.py #数据处理

    |-settings.py #全局配置

    |-spiders

      |-__init__.py #爬虫文件

      |-baidu.py

  |-scrapy.cfg #项目基本配置文件

Original: https://www.cnblogs.com/komorebiZjh/p/16097230.html
Author: 搁浅的小鲸鱼
Title: scrapy框架爬虫

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/500120/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • [SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio

    1、GNU Radio 是什么 2、我为什么要用 GNU Radio 3、数字信号处理 3.1 一点信号理论 3.2 将数字信号处理应用于无线电传输 4、基于流程图的模块化数字信号…

    Python 2023年6月16日
    0160
  • Linux驱动开发十六.input系统——3.系统自带的input驱动

    前面两章我们通过input子系统构建了一个按键类型的输入设备的驱动,其实Linux的内核还提供了一套基于GPIO的按键驱动程序,和LED设备一样,我们只需要在编译内核的过程中进行配…

    Python 2023年10月23日
    0100
  • Pygame install tips (in PyCharm)

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年9月18日
    0121
  • python数据分析知识点_详解Python数据分析–Pandas知识点

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘 重复值的处理 利用drop_duplicates()函数删除数据表中重复多余的记录, 比如删除重复多余…

    Python 2023年8月9日
    0115
  • pytest基础学习第一课

    pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1、简单灵活,容易上手,文档丰富; 注:看到下面实例确实容易上手,简单灵活和文档丰富目前还未能体会 …

    Python 2023年9月9日
    057
  • 爬虫系列:在 Python 中用 Selenium 执行 Javascript

    Selenium 是一个强大的网络数据采集工具,其最初是为网站自动化测试而开发的。近几年,它还被广泛用于获取精确的网站快照,因为它们可以直接运行在浏览器上。Selenium 可以让…

    Python 2023年6月10日
    0123
  • 1月23日Linux c编程之Makefile

    一、说明 使用linux gcc编译程序时,需要输入很多命令及参数,很复杂,容易出错,并且会浪费很多时间。Makefile应运而生,使用Makefile来管理整个软件工程的编译流程…

    Python 2023年11月8日
    086
  • 基于pycharm Windows 服务器-windows客户端 SSH会话远程开发配置

    Windows 服务器-windows客户端 远程开发配置 最近做Django项目的时候,我遇到了这个问题。我的服务器环境是win10+python3.8,本地客户端也是win10…

    Python 2023年8月4日
    098
  • flex布局

    设置flex-direction值为row,然后设置flex-wrap值为wrap,此时,如果子元素总长超出容器长度,那么,子元素超出部分将会换行显示。可以看出,flex-dire…

    Python 2023年6月12日
    0108
  • 今天面了个阿里拿 38K 出来的,让我见识到了基础的天花板

    前言 人人都有大厂梦,对于程序员来说,BAT 为首的一线互联网公司肯定是自己的心仪对象,毕竟能到这些大厂工作,不仅薪资高待遇好,而且能力技术都能够得到提升,最关键的是还能够给自己镀…

    Python 2023年10月27日
    073
  • 10 个实用的 Python 编程技巧

    字典翻转 首先我们来看字典的翻转,假设我们有下面类似的一个字典对象与数据 car_dict = { "brand":"Tesla", &qu…

    Python 2023年6月11日
    097
  • 用Python构建API的八大流行框架

    本文将和您讨论八种可将API的开发过程变得简单且快捷的Python框架。其中,Hug和Eve等框架更适合于小型项目,而Django、Flask和Falcon则适合于大型的应用程序。…

    Python 2023年8月6日
    0108
  • Python数据可视化-基于Python-matplotlib

    这里写自定义目录标题 相关类-Correlation * 1.相关类-散点图-Scatter plot 2.相关类-带边界的气泡图-Bubble plot with Encircl…

    Python 2023年9月2日
    063
  • Python测试框架pytest(22)插件 – pytest-xdist(分布式执行)

    目录 1、安装 2、示例 3、原理和流程 4、解决:多进程运行次数 当测试用例非常多的时候,一条条按顺序执行测试用例,是很浪费测试时间的。这时候就可以用到 pytest-xdist…

    Python 2023年9月9日
    0102
  • Flask 框架学习_2(构造URL + 指定HTTP方法)

    通过url_for 构造URL 首先我们要先了解url_for是做什么的函数。通过前面的学习我们已经知道我们可以通过一个URL映射到一个函数。反过来当我们知道这个函数的时候,想要获…

    Python 2023年8月12日
    066
  • Flask一对多学生课程表项目搭建

    在项目开发过程中,会遇到很多数据之间多对多关系的情况,比如: 学生网上选课(学生和课程) 老师与其授课的班级(老师和班级) 用户与其收藏的新闻(用户和新闻) 等等… 所…

    Python 2023年8月15日
    064
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球