Scrapy-02-item管道、shell、选择器
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:
- 爬虫关闭的时候调用
- process_item:
- 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、选择器的更多相关文章
- 在Scrapy中如何利用Xpath选择器从HTML中提取目标信息(两种方式)
前一阵子我们介绍了如何启动Scrapy项目以及关于Scrapy爬虫的一些小技巧介绍,没来得及上车的小伙伴可以戳这些文章: 手把手教你如何新建scrapy爬虫框架的第一个项目(上) 手把手教你如何新建s ...
- Scrapy 使用 Item 封装数据、使用 Item Pipline处理数据
1.Item 和 Field Scrapy 提供一下两个类,用户可以使用它们自定义数据类,封装爬取到的数据: (1)Item类 自定义数据类(如 BookItem)的基类 (2)Field 用来描述自 ...
- 爬虫框架Scrapy 之(四) --- scrapy运行原理(管道)
解析后返回可迭代对象 这个对象返回以后就会被爬虫重新接收,然后进行迭代 通过scrapy crawl budejie -o xx.josn/xx.xml/xx.csv 将迭代数据输出到json.xml ...
- python之scrapy的debug、shell、settings、pipelines
1.debug了解 2.scrapy shell了解 Scrapy shell是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath表达式 使用方法: scrap ...
- Scrapy 教程(十)-管道与数据库
Scrapy 框架将爬取的数据通过管道进行处理,即 pipelines.py 文件. 管道处理流程 一.定义 item item 表示的是数据结构,定义了数据包括哪些字段 class TianqiIt ...
- 手把手教你进行Scrapy中item类的实例化操作
接下来我们将在爬虫主体文件中对Item的值进行填充. 1.首先在爬虫主体文件中将Item模块导入进来,如下图所示. 2.第一步的意思是说将items.py中的ArticleItem类导入到爬虫主体文件 ...
- scrapy数据写入管道
1 setting里面启动管道 ITEM_PIPELINES = { 'ganji.pipelines.GanjiPipeline': 300,}2 拿到的数据通过yield返回给管道 # -*- c ...
- scrapy框架基于管道的持久化存储
scrapy框架的使用 基于管道的持久化存储的编码流程 在爬虫文件中数据解析 将解析到的数据封装到一个叫做Item类型的对象 将item类型的对象提交给管道 管道负责调用process_item的方法 ...
- Scrapy框架-Item Pipeline
目录 1. Item Pipeline 3. 完善之前的案例: 3.1. item写入JSON文件 3.2. 启用一个Item Pipeline组件 3.3. 重新启动爬虫 1. Item Pipel ...
- scrapy 代码调试用 shell
在虚拟机里CD到你的scrapy某个项目的目录,再 1. scrapy shell + '网址'(注意引号) 2. response.xpath(' ')来提取 如: response.xpath(' ...
随机推荐
- layui的弹出层的title的自定义html
layui的弹出层的title的自定义html //在这里面输入任何合法的js语句 layer.open({ type: 1 //Page层类型 ,area: ['500px', '300px' ...
- java猜数游戏(新手记录每天的作业)
//导入包 import java.util.Scanner;import java.util.Random; //定义一个类 public class Zcs{ //公共静态的主方法 public ...
- Natas23 Writeup(php弱类型)
Natas23: 一个登录页面,查看源码,发现关键代码: if(array_key_exists("passwd",$_REQUEST)){ if(strstr($_REQUEST ...
- Pyinstaller通过spec文件打包py程序(多个py脚本)
Pyinstaller pyinstaller是python的一个第三方模块,使用它可以将python程序打包为可执行文件,实现打包后的程序在没有python环境的机器上也可以运行.pyinstall ...
- 居家办公之后,鹅厂小哥发现Web开发竟能助力身体健康!
疫情特殊时期,各企业.学校纷纷启用远程办公和学习的方式,在办公期间,除了要完成日常工作安排,还要照顾自身的饮食起居,在高强度的工作节奏和缺少运动锻炼的情况之下,如何及早发现健康隐患,快乐办公?且看鹅厂 ...
- payload分离免杀
shellcode loader 借助第三方加载器,将shellcode加载到内存中来执行. https://github.com/clinicallyinane/shellcode_launcher ...
- python中使用openpyxl模块时报错: File is not a zip file
python中使用openpyxl模块时报错: File is not a zip file. 最大的原因就是不是真正的 xlsx文件, 如果是通过 库xlwt 新建的文件,或者是通过自己修改后缀名 ...
- 常见排序算法总结与分析之交换排序与插入排序-C#实现
前言 每每遇到关于排序算法的问题总是不能很好的解决,对一些概念,思想以及具体实现的认识也是模棱两可.归根结底,还是掌握不够熟练.以前只是看别人写,看了就忘.现在打算自己写,写些自己的东西,做个总结.本 ...
- 硬货 | 手把手带你构建视频分类模型(附Python演练))
译者 | VK 来源 | Analytics Vidhya 概述 了解如何使用计算机视觉和深度学习技术处理视频数据 我们将在Python中构建自己的视频分类模型 这是一个非常实用的视频分类教程,所以准 ...
- FileReader 和Blob File文件对象(附formData初始化方法);
一.FileReader为读取文件对象 . api 地址 相关demo 现在只讨论 readAsArrayBuffer,readAsBinaryString,readAsDataURL,rea ...