零、什么是 Scrapy

Scrapy 是一个用于爬取网站并提取结构化数据的高效爬虫框架,它可以用于各种应用程序/项目,比如数据挖掘、信息处理和档案处理等。最初设计 Scrapy 是用来爬取 Web 数据的,但是现在也可以将它用于爬取 API 信息和作为通用 Web 搜索器来提取数据。

一、演示项目

为了向您展示Scrapy带来的好处,我将使用最简单的方式介绍 Scrapy 的示例。下面我们以爬取 http://quotes.toscrape.com/ 网站为例。

import scrapyclass QuotesSpider(scrapy.Spider):name = 'quotes'start_urls = ['http://quotes.toscrape.com/tag/humor/',]def parse(self, response):for quote in response.css('div.quote'):yield {'text': quote.css('span.text::text').get(),'author': quote.xpath('span/small/text()').get(),}next_page = response.css('li.next a::attr("href")').get()if next_page is not None:yield response.follow(next_page, self.parse)

将上述代码存储在 quotes_spider.py 文件中,然后使用 runspider命令来运行这个程序。

scrapy runspider quotes_spider.py -o quotes.json

上述命令执行完成后将会在 quotes_spider.py 的同级目录中出现一个 quotes.json 文件,文件包括作者信息和文本信息,部分内容如下。

[{"author": "Jane Austen","text": "\u201cThe person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.\u201d"
},
{"author": "Groucho Marx","text": "\u201cOutside of a dog, a book is man's best friend. Inside of a dog it's too dark to read.\u201d"
},
{"author": "Steve Martin","text": "\u201cA day without sunshine is like, you know, night.\u201d"
}]

当运行上述命令时, Scrapy 会在其中查找 Spider 定义,并通过内含的搜索器引擎来运行它。程序开始运行时,会对 start_urls 属性中定义的 URL 发送请求,并将响应结果作为参数传递给默认的回调方法 parse ,在 parse 中我们使用 CSS 选择器遍历 quote 元素,生成包含从响应结果中提取出的文本信息和作者,并查找下一页的链接,最后使用和回调函数相同的方法去请求下一页。
目前为止你可以看到 Scrapy 的主要优势之一:请求是异步调度和处理的。这意味着 Scrapy 无需等待请求完成和处理,它可以同时发送另一个请求或执行其他操作。也意味着即使某些请求失败或在处理过程中发生错误,其他请求也可以继续执行。尽管这这样能够进行非常快的爬取网页,但是还可以通过一些设置来限制爬取网站的方式。例如可以执行以下操作:设置每个请求之间的下载延迟,限制每个域或每个IP的并发请求数量。

二、其他内容

现在你已经了解了如何使用 Scrapy 从网站提取数据以及存储项目了,但这仅仅是冰山一角。Scrapy 提供了许多强大的功能,使得抓取网页变得简单而有效,例如:

  1. 使用扩展的 CSS 选择器和 XPath 表达式从HTML/XML源中选择和提取数据,以及使用正则表达式提取的辅助方法;
  2. 具有一个交互式的 Shell 控制台,用于测试编写的 CSS 和 XPath 表达式的效果,这在编写或调试 Spider 时非常有用;
  3. 内置多种数据保存格式;
  4. 强大的编码支持和自动检测功能,用于处理外来的非标准的和存在问题的编码声明;
  5. 强大的可扩展性支持,可以使用 signals 和 AP I来插入自己编写的功能。
  6. 广泛的内置扩展和中间件用于处理:
  • Cookie和会话处理
  • HTTP功能,如压缩,身份验证,缓存
  • 用户代理欺骗
  • robots.txt
  • 爬行深度限制
  • and more
  1. 具有 Telnet 控制台,用于链接在 Scrapy 进程内运行的 Python 控制台来调试爬虫程序;
  2. 其他可重复使用的东西,如可以从 Sitemaps 和 XML/CSV 源爬取内容,自动下载与被抓取的项目关联的图像(或任何其他媒体)的媒体管道,缓存的DNS解析器等等!

三、接下来

接下来的步骤是安装 Scrapy,请按照本教程了解如何创建全面的刮刮项目并加入社区
S解析器等等!

三、接下来

接下来的步骤是安装 Scrapy,请按照本教程了解如何创建全面的刮刮项目并加入社区

一、了解Scrapy相关推荐

  1. Python 爬虫框架Scrapy安装汇总

    传统方式安装Scrapy(慎用) 练习了基本的操作之后,当然就要找框架来进行爬虫实验啊.于是就在网上找Windows 64安装Scrapy的方法,查到的都是非常繁琐的安装方式,由于Scrapy有很多个 ...

  2. Python:爬虫框架Scrapy的安装与基本使用

    一.简单实例,了解基本. 1.安装Scrapy框架 这里如果直接pip3 install scrapy可能会出错. 所以你可以先安装lxml:pip3 install lxml(已安装请忽略). 安装 ...

  3. Python:Scrapy实战项目手机App抓包爬虫

    1. items.py class DouyuspiderItem(scrapy.Item):name = scrapy.Field()# 存储照片的名字imagesUrls = scrapy.Fie ...

  4. Python:Scrapy的settings

    Settings Scrapy设置(settings)提供了定制Scrapy组件的方法.可以控制包括核心(core),插件(extension),pipeline及spider组件.比如 设置Json ...

  5. Python:Scrapy Shell

    Scrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式,查看他们的工作方式,方便我们爬取的网页中提取的数据. 如果安装了 IPyth ...

  6. Python:Scrapy的安装和入门案例

    Scrapy的安装介绍 Scrapy框架官方网址:http://doc.scrapy.org/en/latest Scrapy中文维护站点:http://scrapy-chs.readthedocs. ...

  7. Python:Scrapy 框架简单介绍

    Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非 ...

  8. python爬虫之Scrapy框架的post请求和核心组件的工作 流程

    python爬虫之Scrapy框架的post请求和核心组件的工作 流程 一 Scrapy的post请求的实现 在爬虫文件中的爬虫类继承了Spider父类中的start_urls,该方法就可以对star ...

  9. 『Scrapy』爬虫框架入门

    框架结构 引擎:处于中央位置协调工作的模块 spiders:生成需求url直接处理响应的单元 调度器:生成url队列(包括去重等) 下载器:直接和互联网打交道的单元 管道:持久化存储的单元 框架安装 ...

  10. python3 scrapy中文文档_Scrapy官方文档笔记

    1.创建Scrapy项目 首先用cmd命令行去操作,输入 scrapy startproject 项目名 #这里输入的项目名,就是在你输入的目录它会建立一个新的文件夹,这个文件夹里面还是同样名字的一个 ...

最新文章

  1. 运用.NET读写Windows注册编辑表
  2. PS5 发布,揭秘真假难辨的虚拟和现实
  3. 华为鸿蒙系统2019年秋季上市,华为鸿蒙系统秋季上市?或许真的要提前了,最快可能下个月发布...
  4. java小程序开发平台,隔壁都馋哭了
  5. 素数筛法求十亿内所有质数的和(C++)
  6. 小程序怎样和服务器交互,微信小程序与 Django服务器 数据流 交互通信
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的学生健康信息管理系统
  8. node.js下npm安装太慢,如何解决
  9. python打包成exe文件
  10. 《HBase权威指南》学习总结
  11. 校招行测笔试-图形推理
  12. 永别了.武器------爱好和平人民的美好愿望(图)
  13. 杭州电子科技大学ACM-1093
  14. Win7专业版 下安装ArcGIS desktop 9.3总结
  15. springBoot2学习
  16. 单电机板机模型,f22
  17. 和Ajax斗志斗勇的日子
  18. codewars【1】
  19. 《设计模式之禅(第三版)》 摘录篇-------依赖倒置原则
  20. php 上标,html页面如何显示上标和下标

热门文章

  1. 汇编语言零基础入门学习教程
  2. flowplayer播放_在iPad上自动播放Flowplayer
  3. axure图表_最好用的数据可视化图表制作工具推荐
  4. 概率论与数理统计慕课答案(郑州轻工业大学)
  5. Android版简历(一)
  6. python语音转文字库_py库:文本转为语音(pywin32、pyttsx)
  7. Oracle11g字符集AL32UTF8修改为ZHS16GBK详解
  8. VB中随机数ab的比较大小
  9. 金山打字通屡遭假冒 金山怒批“李鬼”带毒坑用户
  10. 8051单片机的内核的结构及运行过程解析