Scrapy组件之item
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 字符串并返回 listre(): 根据传入的正则表达式对数据进行提取,返回 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的更多相关文章
- scrapy框架中Item Pipeline用法
scrapy框架中item pipeline用法 当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的pyt ...
- 爬虫scrapy组件 请求传参,post请求,中间件
post请求 在scrapy组件使用post请求需要调用 def start_requests(self): 进行传参再回到 yield scrapy.FormRequest(url=url,form ...
- Scrapy中的item是什么
这两天看Scrapy,看到item这个东西,觉得有点抽象,查了一下,有点明白了. Item 是保存爬取到的数据的容器:其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定 ...
- Scrapy不同的item指定不同的Pipeline
scrapy不同的item指定不同的Pipeline from items import AspiderItem, BspiderItem, CspiderItem class myspiderPip ...
- Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法
当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为, ...
- Scrapy 组件的具体用法
一.Spider 用法 在 Scrapy 中,要抓取网站的链接配置.抓取逻辑.解析逻辑都是在 Spider 里完成的.Spider 的一些基础属性和基础方法: name:爬虫名字,Spider的名字定 ...
- Python之爬虫(十八) Scrapy框架中Item Pipeline用法
当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为, ...
- scrapy中对于item的把控
其实很简单,就是想要存储的位置发生改变.直接看例子,然后触类旁通. 以大众点评 评论的内容为例 ,位置:http://www.dianping.com/shop/77489519/review_mor ...
- 原生js实现一个侧滑删除取消组件(item slide)
组件,本质上是解决某个问题封装的类,在此记录原生js实现侧滑删除 先上效果图 实现思路 1. 确定渲染的数据结构 2. 思考划分布局,总的有两个主要的模块:内容区域和按钮区域 2.1 内容区域保持宽度 ...
随机推荐
- Storm--命令行解析
strom的命令行解析 Commands: activate classpath deactivate dev-zookeeper drpc help jar kill list localconfv ...
- 对Java的接口和抽象类 的一些了解
学习并转载自: https://mp.weixin.qq.com/s?__biz=MzAxMzQ3NzQ3Nw==&mid=2654251476&idx=4&sn=e66ec4 ...
- Linux网络接口配置文件ifcfg-eth0解析
本文转自:http://blog.csdn.net/jmyue/article/details/17288467 在Windows上配置网络比较容易,有图形化界面可操作.在Linux中往往是通过命令修 ...
- dbml 注意事项
1,修改dbml中的字段,需要修改2个地方
- 文件操作工具类: 文件/目录的创建、删除、移动、复制、zip压缩与解压.
FileOperationUtils.java package com.xnl.utils; import java.io.BufferedInputStream; import java.io.Bu ...
- 华为S5700系列交换机AR配置静态IP双链路负载分担
适用于:有多个以太WAN口的机型. 业务需求: 运营商1分配的接口IP为100.100.1.2,子网掩码为255.255.255.252,网关IP为100.100.1.1. 运营商2分配的接口IP为2 ...
- centos/linux扩容Swap分区
查看现在的swap容量 [root@node1 ~]# free -h total used free shared buff/cache available Mem: 15G 3.8G 2.1G 5 ...
- sublime使用记录之快速生成html5基本模板
sublime使用记录之快速生成html5基本模板 效果如图:
- eclipse显示结果窗口字体大小
设置前的字体大小 设置后的字体大小 步骤
- Ajax-04 jQuery Ajax 常用操作
jQuery jQuery 其实就是一个JavaScript的类库,其将复杂的功能做了上层封装,使得开发者可以在其基础上写更少的代码实现更多的功能. jQuery Ajax a.概述 jQuery 不 ...