Scrapy是一个流行的网络爬虫框架,从现在起将陆续记录Python3.6下Scrapy整个学习过程,方便后续补充和学习。
Python网络爬虫之scrapy(一)已经介绍scrapy安装、项目创建和测试基本命令操作,本文将对item设置、提取和使用进行详细说明

item设置

  item是保存爬取到的数据的容器,其使用方式和字典类似,并且提供了额外保护机制来避免拼写错误导致的未定义字段错误,定义类型为scrapy.Field的类属性来定义一个item,可以根据自己的需要在items.py文件中编辑相应的item

# -*- 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 ExampleItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
name = scrapy.Field() #属性作为Field对象
population = scrapy.Field()

item提取

  首先回顾下创建的爬虫模块country.py,继承scrapy.Spider,且定义了三个属性

  • name: 用于区别 Spider。 该名字必须是唯一的,您不可以为不同的 Spider 设定相同的名字
  • start_urls: 包含了 Spider 在启动时进行爬取的 url 列表
  • parse() 是 spider 的一个方法。 被调用时,每个初始 URL 完成下载后生成的 response对象将会作为唯一的参数传递给该函数。 该方法负责解析返回的数据(response data),提取数据(生成 item)以及生成需要进一步处理的 URL 的 response对象。

  response常用属性:content、text、status_code、cookies

selector选择器

  scrapy使用了一种基于xpath和css表达式机制:scrapy selector

  selector方法

  • xpath(): 传入 xpath 表达式,返回该表达式所对应的所有节点的 selector list 列表
  • css(): 传入 CSS 表达式,返回该表达式所对应的所有节点的 selector list 列表
  • extract(): 序列化该节点为 unicode 字符串并返回 list
  • re(): 根据传入的正则表达式对数据进行提取,返回 unicode 字符串 list 列表

shell命令抓取

  scrapy提供了shell命令对网页数据进行抓取

  命令格式:scrapy shell web

D:\Pystu\example>scrapy shell http://example.webscraping.com/places/default/view/Afghanistan-1

>>> response.xpath('//tr//td[@class="w2p_fw"]/text()').extract()
['647,500 square kilometres', '29,121,286', 'AF', 'Afghanistan', 'Kabul', '.af',
'AFN', 'Afghani', '', 'fa-AF,ps,uz-AF,tk']

item使用

1. item声明

class ExampleItem(scrapy.Item):
# define the fields for your item here like:
name = scrapy.Field() #属性作为Field对象
population = scrapy.Field(serializer=str)

  Field对象这么了每个字段的元数据(metadata),可以为每个字段指明任何类型的元数据

2. item创建

item = ExampleItem(name="Afghanistan",population="")
print (item)

3. item与字典转换

  根据item创建字典

>>> dict(ExampleItem) # create a dict from all populated values
{"name"="Afghanistan","population"=""}

  根据字典创建item

>>> Product({"name"="Afghanistan","population"="29121262"})
Product(name="Afghanistan",population="29121262")

Scrapy组件之item的更多相关文章

  1. scrapy框架中Item Pipeline用法

    scrapy框架中item pipeline用法 当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的pyt ...

  2. 爬虫scrapy组件 请求传参,post请求,中间件

    post请求 在scrapy组件使用post请求需要调用 def start_requests(self): 进行传参再回到 yield scrapy.FormRequest(url=url,form ...

  3. Scrapy中的item是什么

    这两天看Scrapy,看到item这个东西,觉得有点抽象,查了一下,有点明白了. Item 是保存爬取到的数据的容器:其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定 ...

  4. Scrapy不同的item指定不同的Pipeline

    scrapy不同的item指定不同的Pipeline from items import AspiderItem, BspiderItem, CspiderItem class myspiderPip ...

  5. Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法

    当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为, ...

  6. Scrapy 组件的具体用法

    一.Spider 用法 在 Scrapy 中,要抓取网站的链接配置.抓取逻辑.解析逻辑都是在 Spider 里完成的.Spider 的一些基础属性和基础方法: name:爬虫名字,Spider的名字定 ...

  7. Python之爬虫(十八) Scrapy框架中Item Pipeline用法

    当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为, ...

  8. scrapy中对于item的把控

    其实很简单,就是想要存储的位置发生改变.直接看例子,然后触类旁通. 以大众点评 评论的内容为例 ,位置:http://www.dianping.com/shop/77489519/review_mor ...

  9. 原生js实现一个侧滑删除取消组件(item slide)

    组件,本质上是解决某个问题封装的类,在此记录原生js实现侧滑删除 先上效果图 实现思路 1. 确定渲染的数据结构 2. 思考划分布局,总的有两个主要的模块:内容区域和按钮区域 2.1 内容区域保持宽度 ...

随机推荐

  1. sql临时表的优点

    1: 临时表来组织数据,更高效的查询速度. 2:临时表的操作不会写入日志文件:好处:提高了 临时表操作的速度:坏处: 数据一旦丢失,无法恢复. 3: 临时表只允许当前会话框进行访问,因此不会担心死锁 ...

  2. MySQL引擎及选择

    一.MySQL的存储引擎 完整的引擎说明还是看官方文档:http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html 这里介绍一些主要的引擎 ...

  3. PHP 网站隔离配置

    PHP网站间隔离 网站内目录与目录之间是可以访问的,在某些特定情况下这样是不安全的,如果目录间网址权限被黑客利用很可能造成数据流失,在这里我们可以通过PHPopen_basedir来实现网站间目录隔离 ...

  4. 安装配置资产管理软件GLPI

    GLPI是法语Gestionnaire libre de parc informatique的缩写,是一款历史悠久的资产管理软件: GLPI提供功能全面的IT资源管理接口,可以用来建立数据库全面管理I ...

  5. 使用Kali Linux 破解无线网

    用到的工具 airmon-ngairodump-ngaireplay-ngaircrack-ng 过程 123456789101112131415161718192021222324 root@lm: ...

  6. java获取当前文件路径 [转]

    1.如何获得当前文件路径 常用: 字符串类型:System.getProperty("user.dir"); 综合: package com.zcjl.test.base; imp ...

  7. DCU IP Prefether

    DCU IP Prefether 数据高速缓存单元预取I P 设置.如果设置为E n a b l e d,会预取I P 地址以改善网络连接和系统性能,所以建议选择E n a b l ed.选项:E n ...

  8. vs2017创建dotnetcore web项目,并部署到centos7上

    一.打开vs2017创建web项目 二.简单的创建项目后,发布项目 三. 在centos上创建webroot目录,将发布的项目文件复制到该目录下(本人用虚拟机测试) 四.在webroot目录下打开终端 ...

  9. bootstrap正则表达式验证手机 座机 邮箱

    $('#CusForm').bootstrapValidator({ fields : { //验证手机 'customer.mobile' : { //input中的name 值 validator ...

  10. 内存中加载DLL DELPHI版

    //从内存中加载DLL DELPHI版 unit MemLibrary; interface uses Windows; function memLoadLibrary(pLib: Pointer): ...