Scrapy-02


  • item管道:

    • scrapy提供了item对象来对爬取的数据进行保存,它的使用方法和字典类似,不过,相比字典,item多了额外的保护机制,可以避免拼写错误和定义字段错误。
    • 创建的item需要继承scrapy.Item类,并且在里面定义Field字段。(我们爬取的是盗墓笔记,只有文章标题和内容两个字段)
    • 定义item,在item.py中修改:
    •  # -*- coding: utf-8 -*-
      
       # Define here the models for your scraped items
      #
      # See documentation in:
      # https://doc.scrapy.org/en/latest/topics/items.html import scrapy class BooksItem(scrapy.Item):
      # define the fields for your item here like:
      # name = scrapy.Field()
      title = scrapy.Field()
      content = scrapy.Field()
    • 解析response和对item的使用:
       # -*- coding: utf-8 -*-
      import scrapy
      from ..items import BooksItem class DmbjSpider(scrapy.Spider):
      name = 'dmbj'
      allowed_domains = ['www.cread.com']
      start_urls = ['http://www.cread.com/chapter/811400395/69162457.html/'] def parse(self, response):
      item = BooksItem()
      item['title'] = response.xpath('//h1/text()').extract_first()
      item['content'] = response.xpath('//div[@class="chapter_con"]/text()').extract_first()
      yield item
       # -*- coding: utf-8 -*-
      
       # Define your item pipelines here
      #
      # Don't forget to add your pipeline to the ITEM_PIPELINES setting
      # See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html class BooksPipeline(object):
      def process_item(self, item, spider):
      with open('files/{}.txt'.format(item['title']), 'w+') as f:
      f.write(item['content'])
      return item def open_spider(self, spider):
      # 爬虫启动时调用
      pass def close_spider(self, spider):
      # 爬虫关闭时调用
      pass

      在parse方法中导入item中定义需要的类,将该类实例化,实例化的类对他进行字典的方式操作,直接对其赋值,字典的key值必须和类中对应的字段名字一直。

    • 然后对其使用yield
    • 在pipline.py里面定义三个方法:
      • process_item:

        • 对parse返回的item进行处理,然后在返回出去
      • open_spider:
        • 爬虫启动的时候自动调用
      • close_spider:
        • 爬虫关闭的时候调用
    • pipline里面定义的pipline需要使用,就得到setting里面讲ITEM_PIPELINES的字典激活
    • ITEM_PIPELINES = {
      'books.pipelines.BooksPipeline': 300,
      }
  • shell
    • scrapy  shell 是scrapy提供的一个交互式的调试工具,如果当前环境中安装了ipython,那么将默认调用ipython,也可以在scrapy.cfg的setting下设置: shell = ipython
    • 使用scrapy  shell:
      • 终端输入: scrapy shell   [url]          //url:想爬取的网址,可不添加(也可以是个本地的文件,以路径的方式写入)
    • fetch:
      • fetch接受一个url,构成一个新的请求对象,对返回新的response

Scrapy-02-item管道、shell、选择器的更多相关文章

  1. 在Scrapy中如何利用Xpath选择器从HTML中提取目标信息(两种方式)

    前一阵子我们介绍了如何启动Scrapy项目以及关于Scrapy爬虫的一些小技巧介绍,没来得及上车的小伙伴可以戳这些文章: 手把手教你如何新建scrapy爬虫框架的第一个项目(上) 手把手教你如何新建s ...

  2. Scrapy 使用 Item 封装数据、使用 Item Pipline处理数据

    1.Item 和 Field Scrapy 提供一下两个类,用户可以使用它们自定义数据类,封装爬取到的数据: (1)Item类 自定义数据类(如 BookItem)的基类 (2)Field 用来描述自 ...

  3. 爬虫框架Scrapy 之(四) --- scrapy运行原理(管道)

    解析后返回可迭代对象 这个对象返回以后就会被爬虫重新接收,然后进行迭代 通过scrapy crawl budejie -o xx.josn/xx.xml/xx.csv 将迭代数据输出到json.xml ...

  4. python之scrapy的debug、shell、settings、pipelines

    1.debug了解 2.scrapy shell了解 Scrapy shell是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath表达式 使用方法: scrap ...

  5. Scrapy 教程(十)-管道与数据库

    Scrapy 框架将爬取的数据通过管道进行处理,即 pipelines.py 文件. 管道处理流程 一.定义 item item 表示的是数据结构,定义了数据包括哪些字段 class TianqiIt ...

  6. 手把手教你进行Scrapy中item类的实例化操作

    接下来我们将在爬虫主体文件中对Item的值进行填充. 1.首先在爬虫主体文件中将Item模块导入进来,如下图所示. 2.第一步的意思是说将items.py中的ArticleItem类导入到爬虫主体文件 ...

  7. scrapy数据写入管道

    1 setting里面启动管道 ITEM_PIPELINES = { 'ganji.pipelines.GanjiPipeline': 300,}2 拿到的数据通过yield返回给管道 # -*- c ...

  8. scrapy框架基于管道的持久化存储

    scrapy框架的使用 基于管道的持久化存储的编码流程 在爬虫文件中数据解析 将解析到的数据封装到一个叫做Item类型的对象 将item类型的对象提交给管道 管道负责调用process_item的方法 ...

  9. Scrapy框架-Item Pipeline

    目录 1. Item Pipeline 3. 完善之前的案例: 3.1. item写入JSON文件 3.2. 启用一个Item Pipeline组件 3.3. 重新启动爬虫 1. Item Pipel ...

  10. scrapy 代码调试用 shell

    在虚拟机里CD到你的scrapy某个项目的目录,再 1. scrapy shell + '网址'(注意引号) 2. response.xpath(' ')来提取 如: response.xpath(' ...

随机推荐

  1. Python 【绘制图及turtle库的使用】

    前言 最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,整理了一下,挑了一些觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~赶快去试一下吧) one ...

  2. 《Java8 Stream编码实战》正式推出

    ​当我第一次在项目代码中看到Stream流的时候,心里不由得骂了一句"傻X"炫什么技.当我开始尝试在代码中使用Stream时,不由得感叹真香. 记得以前有朋友聊天说,他在代码中用了 ...

  3. vue 阻止冒泡 @click.stop=

    vue 阻止冒泡 @click.stop= vue中处理冒泡标准姿势 事件修饰符 Vue.js 为 v-on 提供了事件修饰符,修饰符是由点开头的指令后缀来表示的.这些事件修饰符主要有以下几个: st ...

  4. 曹工说Spring Boot源码(23)-- ASM又立功了,Spring原来是这么递归获取注解的元注解的

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  5. Python 之 GIL 全局解释器锁

    GIL(全局解释器锁) GIL锁即全局解释器锁,是 CPython 解释器的特性.它的作用是保证了同一时刻只有一个线程执行 Python 字节码. 它并不是 Python 的特性,它的存在是 CPyt ...

  6. java-FileUtils(复制文件夹、复制文件、字符串直接写入文件中)(新手)

    实例: lx1: import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; pu ...

  7. 网络安全从入门到精通(第一章-1)Web服务器通信原理

    本文内容 IP地址 域名 端口 HTTP协议 从访客角度看网页浏览器流程 常见服务器系统 路径 Web容器 常见的Web容器 !!!多动手,多动手,只看只听是不行的!!! 1,IP地址:就是计算机在互 ...

  8. 零售CRM系统开发的核心功能

    在零售行业中,客户关系管理系统是一个包含销售,市场营销和客户服务流程的中央枢纽.它为企业所有者提供了一种可以结合所有与销售有关的问题并管理销售流程的有效工具.零售CRM可以留住客户,提供个性化的一流客 ...

  9. SpringBoot启动项目之后,访问页面出现Whitelabel Error Page

    话说万事具备,只欠东风- 蹭闲暇时来跑个SpringBoot项目玩玩,把一切配置依赖准备就绪之后打算运行项目. Staring...... 接着,在浏览器输入地址 localhost:8080/hel ...

  10. NodeMCU入坑指南-烧写固件并连接WIFI

    写在前面 今天入手了一个NodeMCU的板子,准备学习一下物联网相关的知识.不过由于博主学艺不精,在第一步烧写固件上就踩坑了,所以就想着把自己的踩坑经历写出来分享给大家,希望能有一些帮助~ 材料准备 ...