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. React setState更新数组中的某个元素Element item

    var items = this.state.items; items[i].status = 'doing'; this.setState({ items: items }); //this.sta ...

  2. gvim中对变量的识别

    最近在项目中使用gvim打开一个文件,发现对某个变量不识别. 后来发现是gvim中对{$comm_ver},带花括号的变量不识别. 类似这样:parameter memory_spec = " ...

  3. jQuery垂直缩略图相册插件 支持鼠标滑动翻页

    在线演示 本地下载

  4. Python中用format函数格式化字符串的用法(2.7版本讲解哦!)

    语法 它通过{}和:来代替%.“映射”示例 通过位置 In [1]: '{0},{1}'.format('kzc',18) Out[1]: 'kzc,18' In [2]: '{},{}'.forma ...

  5. 防盗链&CSRF&API接口幂等性设计

    防盗链技术 CSRF(模拟请求) 分析防止伪造Token请求攻击 互联网API接口幂等性设计 忘记密码漏洞分析 1.Http请求防盗链 什么是防盗链 比如A网站有一张图片,被B网站直接通过img标签属 ...

  6. Linux 通过进程Pid与端口互查

    ps -aux 状态详解 https://blog.csdn.net/whatday/article/details/54409387. linux下通过进程名查看其占用端口: https://www ...

  7. python测试函数的使用时间

    1. 使用装饰器来衡量函数执行时间 有一个简单方法,那就是定义一个装饰器来测量函数的执行时间,并输出结果:(代码通用3.x) import time from functools import wra ...

  8. jquery的50个免费插件

    说不定什么时候用到呢 http://www.admin10000.com/document/4711.html

  9. 智课雅思词汇---二十三、动词性后缀-ate-fy-ish-ize

    智课雅思词汇---二十三.动词性后缀-ate-fy-ish-ize 一.总结 一句话总结: 1.-ate(differentiate,maturate)? 后缀:-ate ①[动词后缀] 表示做.造成 ...

  10. 云服务器用ssh登录

    本地生成密钥 这里选择在购买前先在本地生成密钥key(分为private key和public key),所以先生成密钥再进行购买,购买完以后直接ssh登录,不需要输入密码(安全性考虑) 其中,pub ...