学习目标

  • 创建一个Scrapy项目
  • 定义提取的结构化数据(Item)
  • 编写爬取网站的 Spider 并提取出结构化数据(Item)
  • 编写 Item Pipelines 来存储提取到的Item(即结构化数据)

1. 创建一个爬虫项目(scrapy startproject)

  • 进入自定义的项目目录中,创建一个新的Scrapy项目。运行下列命令:
scrapy startproject myspider
  • 其中, myspider 为项目名称,可以看到将会创建一个 myspider 文件夹,目录结构大致如下:

2. 明确目标(mySpider/items.py)

我们打算抓取:http://www.itcast.cn/channel/teacher.shtml 网站里的所有讲师的姓名、职称和个人信息。

  1. 打开mySpider目录下的items.py
  2. Item 定义结构化数据字段,用来保存爬取到的数据,有点像Python中的dict,但是提供了一些额外的保护减少错误。
  3. 可以通过创建一个 scrapy.Item 类, 并且定义类型为 scrapy.Field的类属性来定义一个Item(可以理解成类似于ORM的映射关系)。
  4. 接下来,创建一个ItcastItem 类,和构建item模型(model)。
import scrapyclass ItcastItem(scrapy.Item):name = scrapy.Field()level = scrapy.Field()info = scrapy.Field()

3. 创建一个爬虫

  • 在当前目录下输入命令,将在mySpider/spider目录下创建一个名为itcast的爬虫,并指定爬取域的范围:
scrapy genspider itcast "itcast.cn"
  • spiders文件夹下面会多出 itcast.py

spiders 爬虫功能要分两步

1. 发送请求 获取响应

(scrapy框架自动实现 拿到网页的原始代码 response ; parse方法才是提取数据 需要手写)
打开 myspider/spiders目录里的 itcast.py,初始代码如下:

import scrapyclass ItcastSpider(scrapy.Spider):name = "itcast"allowed_domains = ["itcast.cn"]start_urls = ['http://www.itcast.cn/'] # 这里网址可以改成需要爬的def parse(self, response):pass


要建立一个xxxSpider, 你必须用scrapy.Spider类创建一个子类,并确定了三个强制的属性 和 一个方法。

  • name = “” :这个爬虫的识别名称,必须是唯一的,在不同的爬虫必须定义不同的名字。

  • allow_domains = [ ] 是搜索的域名范围,也就是爬虫的约束区域,规定爬虫只爬取这个域名下的网页,不存在的URL会被忽略。

  • start_urls = [ ] :爬取的URL元祖/列表。爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些urls开始。其他子URL将会从这些起始URL中继承性生成。

  • parse(self, response) :解析的方法,每个初始URL完成下载后将被调用,调用的时候传入从每一个URL传回的Response对象来作为唯一参数,主要作用如下:

将start_urls的值修改为需要爬取的第一个url

start_urls = ["http://www.itcast.cn/channel/teacher.shtml"]

2. 提取数据 extract() 方法和extract_first()方法

scrapy框架中 response.xpath() 返回的是一个含有selector对象的列表

names = response.xpath("//div[@class='tea_con']//h3/text()")      # 返回一个含有selector对象的列表

scrapy框架中 extract() 方法提取文字

names = response.xpath("//div[@class='tea_con']//h3/text()").extract()        # 使用 extract() 方法取到文字列表

scrapy框架中 extract_first() 取列表第一个元素 如果没有返回None

item["name"] = li.xpath(".//h3/text()").extract_first()     # 相当于item["name"] = li.xpath(".//h3/text()")[0].extract() if len(li.xpath(".//h3/text()")) > 0 else None

scrapy框架—spiders相关推荐

  1. Scrapy框架----- Spiders

    Spider Spider类定义了如何爬取某个(或某些)网站.包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item). 换句话说,Spider就是您定义爬取的动作及 ...

  2. scrapy 框架抓取艺龙酒店(热门城市酒店信息)

    一.scrapy框架 Spiders文件- Yi_long.py import requests import re import time import jsonclass Yi_long():de ...

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

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

  4. Scrapy框架中的crawlspider爬虫

    1 crawlspider是什么 在spider中要寻找下一页的url地址或者内容的url地址,想想是否有简单的方法省略寻找url的过程? 思路: 从response中提取所有的满足规则的url地址 ...

  5. 爬虫基础分享Scrapy框架流程图与安装

    从头开发一个爬虫程序是一项烦琐的工作,为了避免因制造轮子而消耗大量时间,在实际应用中我们可以选择使用一些优秀的爬虫框架,使用框架可以降低开发成本,提高程序质量,让我们能够专注于业务逻辑.所以,我们一起 ...

  6. python 爬虫 学习笔记(一)Scrapy框架入门

    沉迷于通过高效算法及经典数据结构来优化程序的时候并不理解,为什么多线程可以优化爬虫运行速度?原来是程序特性所决定的:传统算法的程序复杂度主要来源于计算,但网络程序的计算时间可以忽略不计,网络程序所面临 ...

  7. python scrapy框架基如何实现多线程_【转】爬虫的一般方法、异步、并发与框架scrapy的效率比较...

    问题的由来 我们的需求为爬取红色框框内的名人(有500条记录,图片只展示了一部分)的 名字以及其介绍,关于其介绍,点击该名人的名字即可,如下图: 这就意味着我们需要爬取500个这样的页面,即500个H ...

  8. Scrapy框架基础使用

    1.流程框架 2.在命令行中输入scrapy,会有scrapy常见命令参数 在命令中输入scrapy startproject quote创建一个叫quote的项目 cd到创建好的项目目录中,然后执行 ...

  9. scrapy框架_Scrapy框架学习---Scrapy介绍(一)

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

  10. Python爬虫从入门到放弃(十二)之 Scrapy框架的架构和原理

    原文地址https://www.cnblogs.com/zhaof/p/7173397.html 这一篇文章主要是为了对scrapy框架的工作流程以及各个组件功能的介绍 Scrapy目前已经可以很好的 ...

最新文章

  1. CVPR 2021 顶会冠军带你解密图像分割
  2. memcache redis
  3. 6.1 C/S 架构介绍
  4. 感恩八年 — 致CSDN (感谢有你)
  5. python语言能够整合各类程序代码-python语言概述
  6. 移动开发框架,第【一】弹:QuoJs 官方文档(汉化版)
  7. 网络基础:ACL访问控制例表
  8. maven 国内私服
  9. Python笔记(2) Python基础
  10. cmd对应linux sleep命令,linux sleep命令参数及用法详解(linux休眠延迟执行命令)
  11. 60、剑指offer--把二叉树打印成多行
  12. Nginx+tomcat整合
  13. 小学计算机键盘的初步认识教案,教学设计——小小键盘真神奇
  14. 时钟和数据恢复(CDR)电路原理——基于PLL
  15. ASP.NET MVC入门视频教程
  16. 游戏编程模式 - 观察者模式
  17. python培训班价格-少儿编程培训机构哪家好,儿童编程价格多少钱?家长知多少...
  18. bootstrapCDN地址
  19. 快速接入百度地图定位、描点
  20. 我允许失败,但是我不允许不努力!

热门文章

  1. GoFW|网页加速器
  2. 成绩排序(一)c++
  3. 安装完固态硬盘后计算机里没显示,安装了双硬盘电脑却不显示新硬盘怎么办
  4. 论文分享Why Do Adversarial Attacks Transfer? Explaining Transferability of Evasion and Poisoning Attacks
  5. java 批量生成条形码,打包zip(springboot)
  6. 三层交换机和三层交换实验
  7. 多智能体系统的分布式协同控制——采样控制、脉冲控制、弹性控制
  8. vue大屏项目开发框架dataV
  9. Xilinx XC7Z020双核ARM+FPGA开发板试用合集——硬件赏析
  10. import requests