Scrapy组件之item

item设置item是保存爬取到的数据的容器,其使用方式和字典类似,并且提供了额外保护机制来避免拼写错误导致的未定义字段错误,定义类型为scrapy.Field的类属性来定义一个item,可以根据自

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

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

Scrapy组件之item

>>> response.xpath('//tr//td[@class="w2p_fw"]/text()').extract()
['647,500 square kilometres', '29,121,286', 'AF', 'Afghanistan', 'Kabul', '.af',
 'AFN', 'Afghani', '93', '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="29121262")
        print (item)

3. item与字典转换

  根据item创建字典

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

  根据字典创建item

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120194.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 用curl抓取网站数据,仿造IP、防屏蔽终极强悍解决方式

    用curl抓取网站数据,仿造IP、防屏蔽终极强悍解决方式原文链接:http://blog.csdn.net/linglongwunv/article/details/8116359最近在做一些抓取其它网站数据的工作,当然别人不会乖乖免费给你抓数据的,有各

    2022年6月30日
  • linuxdocker常用命令_查看docker

    linuxdocker常用命令_查看docker1、docker服务相关命令启动docker服务:systemctlstartdocker停止docker服务:systemctlstopdocker重启docker服务:systemctlrestartdocker查看docker服务状态:systemctlstatusdocker设置开机启动docker服务:systemctlenabledocker2、docker镜像相关命令查看镜像:dockerimages查看所有镜像:dockerimages-a从网络中

    2022年9月16日
  • werfault进程使用CPU率高

    werfault进程使用CPU率高werfault进程是Windowsvista错误报告进程,是用来向微软反馈报告。是安全的正常进程。解决方法:1.打开控制面板”—“系统和维护”,点击“问题报告和解决方案”。2.点击“更改设置”—“高级设置”。3.接下来的“对于所有用户和应用程序,问题报告被设置为”,点击右边个“更改设置”。4.在弹出窗口,选择“关闭”。补充:xp系统下禁用错误报告简单方法:1.我的电脑…

    2022年6月29日
  • Pytest(18)pytest接口自动化完整框架思维导图[通俗易懂]

    Pytest(18)pytest接口自动化完整框架思维导图[通俗易懂]pytest接口自动化完整框架思维导图

    2022年8月6日
  • 激活成功教程ftp密码代码

    激活成功教程ftp密码代码激活成功教程ftp密码代码这是一个激活成功教程ftpserver密码的程序,但是只是娱乐使用而已,不要太当真设计思路如下//写一个ftp密码激活成功教程器//1创建秘钥#include<stdio.h>#include<string.h>#include<stdlib.h>intmain(){ char*ipaddress=”19…

    2022年11月3日
  • 大数据–商品推荐系统介绍(上)

    这次我们介绍商品推荐系统:推荐系统是什么推荐引擎的分类常见的推荐算法混合的推荐机制(重要)推荐系统架构协同过滤的实现推荐引擎解决的几个问题主动的用户,通过类目和搜索进行引导,对结果页进行干预被动的用户,通过用户的历史行为分析,推荐用户可能感兴趣的商品。对商家来讲,帮助商家卖出更多的东西推荐系统是什么目的为了解决信息过载和用户无明确需求的问题,找到用户感兴趣的物品…

    2022年4月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号