• 慕课网首页
  • 免费课
  • 实战课
  • 体系课
  • 慕课教程
  • 专栏
  • 手记
  • 企业服务
  • 猿问

我的购物车

已加入门课程

购物车里空空如也

快去这里选购你中意的课程

实战课

体系课

我的订单中心
去购物车
  • 登录 / 注册
  • 新人专属100元礼包 | 查看
抱歉,未找到你想要查询的结果
全部开发者教程

Scrapy 入门教程

爬虫框架基础篇
Scrapy 爬虫框架介绍 使用 Requests 库请求网址 Scrapy 默认的网页解析器 Xpath Redis 数据库的基本操作 MongoDB 数据库的基本操作 一个简单的爬虫实例:互动出版网爬虫 第一个基于 Scrapy 框架的爬虫
Scrapy 框架初级篇
Scrapy 运行架构与数据处理流程简介 Scrapy 框架的 Shell 工具使用 Scrapy 常用命令及其分析 Scrapy中的Request和Response Scrapy 中的 Pipline 管道 Scrapy 中的中间件 Scrapy 配置介绍及常见优化配置 Scrapy 抓取起点中文网:实现登录和认证 Scrapy 抓取今日头条:抓取每日热点新闻
Scrapy 框架高级篇
网站反爬虫绕过技术分析 Splash 服务初体验 深入使用 Splash 服务 Selenium 自动化测试工具介绍 Scrapy与 Selenium 的结合使用 Scrapy 的分布式实现
Scrapy 框架源码篇
Twisted 框架基础 深入分析 Scrapy 下载器原理 深入理解 Scrapy 中间件 深入分析 Scrapy 的 Pipeline 原理 深入分析 crawl 命令的执行过程
  • 前端开发

    JavaScript

    JavaScript 入门教程

    本教程带你从初级到高级全面掌握 Javascript 的使用方法

    TypeScript 入门教程

    这是一个很好的简单课程,只需2小时你就可以学习TypeScript基础知识。

    Vue 入门教程

    本教程带您从零开始学习 Vue 框架的使用,让您轻松应对 Vue 项目的开发。

    Ajax 入门教程

    本教程涵盖Ajax的实现原理,及Ajax封装,最后是框架实现方法。

    ES6-10 入门教程

    对比 ES5 进行学习 ES6+,理解 ES6+ 语法背后的思想

    Yarn 入门教程

    Yarn得相关基础知识和高级进阶

    ECharts 入门教程

    从零开始学习 ECharts ,掌握 ECharts 核心内容

    HTML & CSS

    CSS3 入门教程

    本课程从盒模型、文字、颜色、过渡、动画、布局、伪类等方面介绍 CSS3 的使用。

    雪碧图入门教程

    本文详细介绍了雪碧图的由来历史以及各种使用方式

    移动端布局教程

    由于移动互联网的兴起,移动端项目占据了很大一部分比重,本章将详细讲解几种常见布局

    Html5 入门教程

    最新一代的HTML标准,增加了许多实用的特性

    Sass 入门教程

    前端项目中 Sass 的快速入门教程

    HTML 入门教程

    从零讲解 HTML,掌握基础 HTML 知识内容

    canvas 入门教程

    本教程带你从初级到高级全面掌握canvas的使用方法

    uni-app 入门教程

    从零开始学习 uni-app 框架,轻松上手应用开发

  • 服务端相关

    服务器

    Nginx 入门教程

    本教程使您掌握 Nginx 安装、配置、核心模块的详解、实际使用的能力。

    HTTP 入门教程

    从协议原理开始到 Web 服务器以及 Web 安全一网打尽

    Docker 入门教程

    从 Docker 的基础概念开始,从实际问题入手带你学习 Docker

    Shell 入门教程

    本教程由浅入深,系统性的讲解Linux Shell脚本编程。

    Linux 入门教程

    本教程从安装 Linux 开始,囊括 Linux 基础命令操作以及进阶系统管理

    开发工具

    Gradle 入门教程

    本教程使您掌握实际使用gradle进行项目构建、测试、打包、发布的能力。

    Vim 编辑器教程

    课程主要讲解Vim的安装配置,四种模式、基本操作,以及包管理工具和寄存器等内容。

    RESTful 规范教程

    本教程从什么是 REST 开始带你领略 Web 开发中无处不在的规范

    Dreamweaver 教程

    DW 是一款同时具有网页制作和网页管理功能的网站开发工具,可以快速进行网站建设

    Markdown 入门教程

    本课程涵盖 Markdown 的基本及扩展语法。

    Maven 入门教程

    从最基础的安装 Maven 开始到 Maven 在开发中的实际应用

    Eclipse 编辑器教程

    本教程从Eclipse安装开始带你轻松掌握Eclipse常用开发技巧

    GitHub 入门教程

    本教程带你轻松掌握最实用的 GitHub 知识

    Android Studio 编辑器教程

    Android Studio 编程技巧一网打尽

    PyCharm 编辑器教程

    工作经常用到的 PyCharm 编辑器使用技巧一网打尽

    Sublime Text 使用教程

    花里胡哨展示sublime编辑器的各种功能

    Postman 教程

    Postman 由Google 开发用来做接口请求测试,前后端开发人员都可以使用

    Git入门教程

    从入门到精通。

    热门服务端语言

    C 语言入门教程

    本教程从语法基础、进阶知识等各方面详解 C 语言。

    Go 入门教程

    本教程从 Go 语言的基本语法掌握到进阶编程实践

    Kotlin 教程

    从 Kotlin 的基础语法到高级特性一网打尽

    Ruby 入门教程

    本教程从 Ruby 的各种对象开始学习到 Ruby 的实际使用

    ThinkPHP 入门教程

    本教程主要讲解 ThinkPHP 框架如何上手开发应用

  • Java

    基础应用

    Java 入门教程

    深入浅出讲解 Java 语言基础知识,带你入门 Java 语言

    Android 入门教程

    为你解析最实用的 Android 技术,让你平滑上手,顺利进阶,为开发保驾护航

    算法入门教程

    分析讲解常见算法的思想及使用

    数据结构入门教程

    通俗易懂的带你了解 Java 数据结构

    Lambda 表达式教程

    本教程展现了Lambda表达式的基础语法以及在程序中的应用

    Java 并发原理入门教程

    本教程为Java并发原理入门教程,在Java程序开发中占据着举足轻重的地位

    设计模式入门教程

    带你分析最常见的九个设计模式

    Java并发工具

    本课程简洁明了展示最基本的并发工具类相关概念及应用方法。

    JVM 入门教程

    JVM 入门教程,对JVM结构进行分模块讲解,简单易懂。

    RabbitMQ 入门教程

    超系统的RabbitMQ基础知识课程,你还在等什么?

    网络编程入门教程

    Java 网络编程核心要点详解

    后端通用面试教程

    带你系统梳理后端高频面试题,轻松丰富你的校招&社招阶段

    仿社交小程序

    商业级小程序 开发仿社交实战

    框架应用

    Spring Boot 入门教程

    循序渐进讲解 Spring Boot 企业级应用开发

    Spring 入门教程

    通俗易懂 渐进式讲解 Spring 企业级开发应用

    Hibernate 入门教程

    由浅入深讲解 Hibernate 企业级 JDBC 应用框架

    MyBatis 入门教程

    本教程整理出“百分之二十”的知识,帮你办到“百分之八十”事情

    Spring MVC 入门教程

    通俗易懂讲解 Spring MVC 框架应用

    Swagger 入门教程

    本课程以图文并茂的方式带你学习 Swagger 核心知识和应用剖析

    Zookeeper 入门教程

    由浅入深的 学习 ZooKeeper 的基本使用以及高级使用

    Netty 教程

    由浅入深的讲解 Netty 的核心知识体系,快速上手使用和理解 Netty

    Spring Security

    本课程涵盖了 Spring Security 框架的基本原理和集成方法

    微服务

    Spring Cloud Hystrix

    系统介绍 Hystrix 支持特性与实际应用场景实战

  • Python

    基础应用

    Python 入门语法教程

    本教程带你从 Python 的基础语法开始学习 Python。

    Python 原生爬虫教程

    本教程从爬虫基础知识到进阶技巧到实际应用。

    Python 进阶应用教程

    本教程涵盖 Python 的面向对象、标准库解析、异常处理直至最后的领域应用

    Python 算法入门教程

    用 Python 代码实现常用算法并汲取算法核心思想。

    进阶方向应用

    Django 入门教程

    从 Web 基础到 Django 框架的实际开发应用

    Flask 框架教程

    Flask 框架快速入门实现一个 TodoList 功能

    NumPy 入门教程

    本教程从基础的数据类型开始到 NumPy 的高级应用一网打尽

    Scrapy 入门教程

    从爬虫基础开始到使用 Scrapy 框架抓取各大网站数据

    TensorFlow 入门教程

    通过本教程对 TensorFlow 框架快速入门

    Python 办公自动化教程

    本教程带你使用Python快速操作Excel、Word、PPT,处理各种文件

    Pandas 入门教程

    本教程从基础的数据类型开始到 Pandas 的高级应用一-网打尽

  • 数据库

    MySQL

    MySQL 入门教程

    本教程主要讲解 MySQL 增删改查等基础操作

    SQL 入门教程

    本教程讲解使用 SQL 访问和处理数据系统中的数据的方法。

    MySQL 进阶教程

    那些你还不理解的 MySQL 高阶特性一网打尽

首页 慕课教程 Scrapy 入门教程 Scrapy 入门教程 Scrapy 爬虫框架介绍
沈奇才 · 更新于 2020-08-21

使用 Requests 库请求网址

下一节

Scrapy 爬虫框架介绍

今天我们开始学习一门新的 Python 框架:Scrapy。Scrapy 是一个爬虫框架,能帮助我们简化网络爬虫开发,用最少的代码完成爬虫项目,同时具备完整爬虫功能。

1. 爬虫简介

网络爬虫是一段具有特殊含义的代码,其功能是模拟用户在浏览器上的操作,发送 HTTP 请求,接收数据,然后解析并保存数据,方便其他应用程序使用和分析。

这个过程中间包含了许多自动化的操作,若使用得当,可以产生大量的经济价值以及帮助我们减少繁杂的工作。

互联网上每天都会有无数的爬虫在网络上游走,获取相应网站的数据。这些爬虫和人一样,有好有坏,有正义的,也有邪恶的。比如百度 Spider 等搜索引擎爬虫,为我们提供了信息检索的最新数据,我们能通过搜索关键字找到相应的网站,正是得益于百度 Spider 每天孜孜不倦的工作。搬运相应网站的地址和更新相应的信息数据,这也是必要的爬虫,许多网站也乐于被百度爬虫抓取最新数据。

但是也存在许多恶意爬虫,长时间、大规模的请求特定网站数据,给网站服务器造成了巨大的压力,影响正常用户请求,这也是许多网站讨厌爬虫并积极设置反爬虫策略的原因。

对于个人开发者而言,学好爬虫技术,对于个人成长方面有着极大的好处:

  • 锻炼个人技能,及时体验技术带来的好处:使用简单的几行 Python 代码就能获取网站数据,这样的学习曲线远胜于使用 C/C++ 进行爬虫开发。这也是很多人选择 Python 开发爬虫的原因;
  • 在工作和生活上有时候能带来极大的好处:比如收集数据,完成毕业论文;比如开-发一款 12306 抢票助手,解决回家抢票困难的问题;又或者抓取股票交易数据,帮助我们分析股票走势等等。事实上,已经有很多人做了这些工作并在 Github 上进行了开源。

事实上,爬虫的应用还有很多,就不在此逐一说明了。接下来我们介绍 Python 的爬虫框架以及使用爬虫框架进行开发的好处。

2. 各种爬虫框架优缺点对比

下面我们介绍开源界中几个关注度比较高的 Python 爬虫框架。所谓关注度高包括 Github 上的点赞数以及文档的丰富程度。

2.1 Scrapy

Scrapy 框架大概是最火的 Python 爬虫框架了,这一点可以从它的 Github 点赞数看出来:38k !单纯从这个数字就可以看出这是一个超级热门的框架了。

图片描述

Scrapy 的 github 地址

在 Scrapy 的官方文档中,对该框架是这么介绍的:

Scrapy is an application framework for crawling web sites and extracting structured data which can be used for a wide range of useful applications, like data mining, information processing or historical archival.

简单翻译下就是:

Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架。尽管如此,它也可以作为一个通用的 Web 爬虫框架来开发爬虫项目。它基于 Twisted 这个流行的异步处理框架,因此具有较高的性能。开发者只需要定制开发几个模块就可以轻松的实现一个高性能爬虫,用来抓取网页内容,非常方便。下面我总结了一下 Scrapy 框架的几个优点:

  • Scrapy 是异步的,且可以灵活调节并发量;
  • 采取可读性更强的 Xpath,解析网页速度快;
  • 有统一的 Middleware 过滤器;
  • 支持 Shell 方式,方便独立调试;
  • 通过管道的方式存入数据库,灵活方便且可保存为多种形式。

当然,Scrapy 框架也是有不少缺点的,比较明显的有如下几点:

  • 本身无法实现分布式爬虫;

  • 自身去重效果差,消耗内存,且不能持久化;

  • 无法获取需要执行 js 才能获取数据的网页;

  • 基于 twisted 框架,如果执行出错是不会停掉其他任务的,这回导致 Scrapy 在爬取数据出错后难以察觉。

基于 Scrapy 的这些缺点产生了许多框架的插件来解决。比如 scrapy-redis 解决了 Scrapy 框架的分布式爬取问题; scrapy-splash 插件可以抓取 js 动态渲染内容等等。后面我们也会基于这些插件开发一个完整的分布式爬虫项目来帮助我们体验爬虫的魅力。

2.2 Pyspider

pyspider 是一款国人编写的功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优先级等。总的来说,它的特点如下:

  • 具有强大的 webui 界面,并且支持脚本编辑,任务监控,项目管理和结果查看;

  • 数据后台支持 MySQL、MongoDB、Reids、SQLite、Elasticsearch 和 PostgreSQL 等主流关系型和非关系型数据库;

  • 消息队列支持 RabbitMQ、Redis 等;

  • 支持任务优先级,定时,失败重试等调度方案;

  • 支持分布式架构,抓取 js 页面。

Pyspider 也存在一些明显的问题:丰富的文档、成熟的社区,这些都是 pyspider 欠缺的,也造成了 Pyspider 不如 Scrapy 流行的重要原因之一。但 Pyspider 在简洁易用性上却是胜过 Scrapy 的,很多初学者也会非常喜欢它提供的 webui 页面,这也是该框架得以流行的原因之一。

2.3 Cola

Cola 是一个分布式的爬虫框架,对于用户来说,只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。

但是从 Github 上的用户的关注度来看,相比上面两个框架而言,差了不少。整个项目的主要贡献者只有2个人,且上次一发布 release 版本还是2015年的上古时代。这些都已经充分说明了 Cola 框架正在逐渐走向衰退,不建议在生产环境中使用,其潜在的 Bug 和相关安全风险无法得到及时的更新和修复,但是作为学习爬虫框架的参考资料还是不错的,深入研究这样一个框架的源码能收获不少知识。

3. 为什么要学习 Scrapy?

Scrapy 是一款性能强大爬虫框架,基于 Scrapy 我们可以快速开发出高性能的爬虫。此外,由于 Scrapy 框架的高度可扩展性,我们可以在该框架简单改造就能实现自己的业务需求。例如 Scrapy-Redis 插件,短短几千行代码就实现 Scrapy 框架的分布式功能。

如果能熟练掌握 Scrapy 框架,我们会具备如下的优势:

  • 基于 Scrapy 框架快速开发出高性能爬虫,不用担心爬虫性能问题;
  • 丰富的 Scrapy 文档、良好的社区以及庞大的用户群体。这些都是我们选择 Scrapy 框架的理由;
  • 熟练掌握 Scrapy 框架后,可以深入学习 Scrapy 框架源码,了解一个完整爬虫框架的组成;在架构设计和代码风格上,Scrapy 都是极为优秀的。作为初学者的我们可以从中收获不少,特别是关于 Twisted 框架的运用;
  • 高度可定制化。这是 Scrapy 框架的一个极大优势,通过简单改造 Scrapy,我们就能实现特点功能的爬虫。如 Scrapy-Redis 插件,不过数千行代码,就将 Scrapy 框架扩展成分布式,而且是即插即用型,不用改动 Scrapy 源码。

看到这些特点后,你还有什么理由不学习 Scrapy 框架呢?

4. 学习基础

为了学好该框架以及熟练使用 Scrapy 开发爬虫项目,我们需要具备以下基础:

  • 简单的网页基础,HTML/CSS等;
  • Python 基础;
  • 简单的计算机网络基础,比如了解 HTTP 协议、TCP/IP 协议等;

本课程会假定你已经了解或者熟悉上述基础知识,并在后面不会对一些简单的问题作出解释,重点放到剖析这个框架并熟练掌握。

5. 小结

本小节简单介绍了爬虫知识以及在 Python 中比较流行的爬虫框架,重点介绍了 Python 中大火的 Scrapy 框架,这也是我们接下来学习的重点。紧接着描述了学习 Scrapy 框架必备的一些基础知识 。从下一节起,将开始我们正式的剖析 Scrapy 框架之旅,祝大家旅途愉快。

  • 划线
  • 写笔记
  • 复制

0/1000

 

下一节

使用 Requests 库请求网址

我要提出意见反馈
· 最近更新于 请填写更新时间
使用手机查看
最近更新
向你推荐
更多
索引目录
Scrapy 爬虫框架介绍
1. 爬虫简介
2. 各种爬虫框架优缺点对比
2.1 Scrapy
2.2 Pyspider
2.3 Cola
3. 为什么要学习 Scrapy?
4. 学习基础
5. 小结
意见反馈 收藏教程 标记书签
使用 Ctrl+D 可将网站添加到书签
  • 企业服务
  • 网站地图
  • 网站首页
  • 关于我们
  • 联系我们
  • 讲师招募
  • 帮助中心
  • 意见反馈
  • 代码托管

Copyright© 2023 imooc.com All Rights Reserved | 京ICP备 12003892号-11 京公网安备11010802030151号

意见反馈 常见问题 APP下载
官方微信
返回顶部