框架结构

引擎:处于中央位置协调工作的模块

spiders:生成需求url直接处理响应的单元

调度器:生成url队列(包括去重等)

下载器:直接和互联网打交道的单元

管道:持久化存储的单元

框架安装

一般都会推荐pip,但实际上我是用pip就是没安装成功,推荐anaconda,使用conda install scarpy来安装。

scarpy需要使用命令行,由于我是使用win,所以还需要把scarpy添加到path中,下载好的scarpy放在anaconda的包目录下,找到并添加。

框架入门

创建项目

在开始爬取之前,您必须创建一个新的Scrapy项目。 进入您打算存储代码的目录中,运行下列命令:

scrapy startproject tutorial

该命令将会创建包含下列内容的 tutorial 目录,这个目录会创建在当前cmd的工作目录下:

tutorial/scrapy.cfgtutorial/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py ... 

这些文件分别是:

  • scrapy.cfg: 项目的配置文件
  • tutorial/: 该项目的python模块。之后您将在此加入代码。
  • tutorial/items.py: 项目中的item文件.
  • tutorial/pipelines.py: 项目中的pipelines文件.
  • tutorial/settings.py: 项目的设置文件.
  • tutorial/spiders/: 放置spider代码的目录.

实际上这算也是一个项目,可以使用pycharm加载。

编写爬虫

Spider是用户编写用于从单个网站(或者一些网站)爬取数据的类。

为了创建一个Spider,您必须继承 scrapy.Spider 类, 且定义以下三个属性:

  • name: 用于区别Spider。 该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。

  • start_urls: 包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的页面将是其中之一。 后续的URL则从初始的URL获取到的数据中提取

  • parse() 是spider的一个方法。 被调用时,每个初始URL完成下载后生成的 Response 对象将会作为唯一的参数传递给该函数。 该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的 Request 对象。

  • allowed_domains:域范围,非此域内url不予爬取。

spider文件要保存在Spider目录下,文件名和类名都可以随便取,但是name属性是唯一的,调用时用的也是name属性。

import scrapyclass DmozSpider(scrapy.Spider):name = "dmoz"allowed_domains = ["dmoz.org"]start_urls = ["http://www.dmoz.org/Computers/Programming/Languages/Python/Books/","http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"]def parse(self, response):filename = response.url.split("/")[-2]with open(filename, 'wb') as f:f.write(response.body)

开始爬取

scrapy crawl dmoz

输出类似下面:

2014-01-23 18:13:07-0400 [scrapy] INFO: Scrapy started (bot: tutorial) 2014-01-23 18:13:07-0400 [scrapy] INFO: Optional features available: ... 2014-01-23 18:13:07-0400 [scrapy] INFO: Overridden settings: {} 2014-01-23 18:13:07-0400 [scrapy] INFO: Enabled extensions: ... 2014-01-23 18:13:07-0400 [scrapy] INFO: Enabled downloader middlewares: ... 2014-01-23 18:13:07-0400 [scrapy] INFO: Enabled spider middlewares: ... 2014-01-23 18:13:07-0400 [scrapy] INFO: Enabled item pipelines: ... 2014-01-23 18:13:07-0400 [dmoz] INFO: Spider opened 2014-01-23 18:13:08-0400 [dmoz] DEBUG: Crawled (200) <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/> (referer: None) 2014-01-23 18:13:09-0400 [dmoz] DEBUG: Crawled (200) <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Books/> (referer: None) 2014-01-23 18:13:09-0400 [dmoz] INFO: Closing spider (finished)

查看包含 [dmoz] 的输出,可以看到输出的log中包含定义在 start_urls 的初始URL,并且与spider中是一一对应的。在log中可以看到其没有指向其他页面( (referer:None) )。

回顾一下过程

Scrapy为Spider的 start_urls 属性中的每个URL创建了 scrapy.Request 对象,并将 parse 方法作为回调函数(callback)赋值给了Request。

Request对象经过调度,执行生成 scrapy.http.Response 对象并送回给spider parse() 方法。

转载于:https://www.cnblogs.com/hellcat/p/7421656.html

『Scrapy』爬虫框架入门相关推荐

  1. 『Golang』Martini框架入门

    本文介绍golang中的优秀web开发框架martini! 序 Martini框架是使用Go语言作为开发语言的一个强力的快速构建模块化web应用与服务的开发框架.Martini是一个专门用来处理Web ...

  2. 以『B站』为实战案例!手把手教你掌握爬虫必备框架『Scrapy』

    1.前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取 Python免费学习 ...

  3. linux scrapy 定时任务_2019Python学习教程(全套Python学习视频):Scrapy爬虫框架入门...

    Scrapy爬虫框架入门 Scrapy概述 Scrapy是Python开发的一个非常流行的网络爬虫框架,可以用来抓取Web站点并从页面中提取结构化的数据,被广泛的用于数据挖掘.数据监测和自动化测试等领 ...

  4. 崔老哥python scrapy爬虫框架入门

    Scrapy 爬虫框架入门案例详解 Scrapy入门 创建项目 创建Spider 创建Item 解析Response 使用Item 后续Request 保存到文件 使用Item Pipeline 源代 ...

  5. 快速认识网络爬虫与Scrapy网络爬虫框架

    本课程为之后Scrapy课程的预先课程,非常简单,主要是为了完全没有基础的小白准备的,如果你已经有了一定的了解那么请跳过该部分 问:什么是网络爬虫 答:就是从网上下载数据的一个程序,只不过这个程序下载 ...

  6. Scrapy爬虫框架入门

    一.scrapy框架简介 scrapy和前面学的BeautifulSoup库.Re库其实都是函数功能库,但是scrapy由于有着一些固定的结构,更像是一个框架,所以称之为爬虫框架,所谓爬虫框架,指的是 ...

  7. python网络爬虫(14)使用Scrapy搭建爬虫框架

    目的意义 爬虫框架也许能简化工作量,提高效率等.scrapy是一款方便好用,拓展方便的框架. 本文将使用scrapy框架,示例爬取自己博客中的文章内容. 说明 学习和模仿来源:https://book ...

  8. scrapy 中爬取时被重定向_一篇文章教会你理解Scrapy网络爬虫框架的工作原理和数据采集过程...

    今天小编给大家详细的讲解一下Scrapy爬虫框架,希望对大家的学习有帮助. 1.Scrapy爬虫框架 Scrapy是一个使用Python编程语言编写的爬虫框架,任何人都可以根据自己的需求进行修改,并且 ...

  9. Scrapy网络爬虫框架实际案例讲解,Python爬虫原来如此简单!

    创建项目 Scrapy爬虫框架提供一个工具来创建项目,生成的项目中预置了一些文件,用户需要在这些文件中添加python代码.最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你 ...

最新文章

  1. Anaconda简单入门
  2. 北欧小国的宏大AI实验:让1%的人口接受人工智能培训
  3. 【c++】27.事件驱动、IO复用、sellect、poll、epoll三者的区别
  4. npm install 原理(node_modules)
  5. python redis 人员信息查询_python redis 模块查询数据结果 bytes 类型转码的方法
  6. 数据仓库如何实现湖仓一体数据分析?
  7. 【渝粤教育】 国家开放大学2020年春季 1444药理学(本) 参考试题
  8. matlab散点图与colorbar,MATLAB如何为图像做colorbar
  9. Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十五)
  10. GCN的形象讲解1,2
  11. cmd运行sql文件
  12. UEditor 编辑器的下载与安装
  13. Hibernate OneToMany中的mappedBy
  14. win10装鸿蒙双系统,win10下能装双系统教程
  15. PCIe扫盲——基于WinDriver快速开发PCIe驱动简明教程
  16. Prolog入门教程
  17. 机器学习十大经典算法入门
  18. 用dxdiag命令show计算机系统配置
  19. nrcellcu和nrcelldu_华为5G常用MML命令(现场版本)
  20. 基于web在线购物商城网站的设计与实现(学生网页设计作业源码)

热门文章

  1. IDEA自动生成类注解,IDEA作者信息自动生成,IDEA类信息自动生成
  2. 2022-2028年中国科学仪器行业研究及前瞻分析报告
  3. Redis 笔记(14)— 持久化及数据恢复(数据持久方式 RDB 和 AOF、数据恢复、混合持久化)
  4. Go 学习笔记(74)— Go 标准库之 unsafe
  5. OpenCV 笔记(02)— 图像显示、保存、腐蚀、模糊、canny 边缘检测(imread、imshow、namedWindow、imwrite)
  6. pytorchviz visdom 可视化 pytorch
  7. [PyTorch] rnn,lstm,gru中输入输出维度
  8. Java基本数据之间的类型转换
  9. LeetCode中等题之最简分数
  10. 作业函数的定义与调用