我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何引入ItemLoader和Item预处理函数

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何引入ItemLoader和Item预处理函数

今天就跟大家聊聊有关如何引入ItemLoader和Item预处理函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

1.引入ItemLoader

  • 在项目的item.py文件中创建一个自定义的loader类,然后让这个自定义类继承ItemLoader类;

class XkdItemLoader(ItemLoader):    default_output_processor = TakeFirst()
  • ItemLoader类的语法:scrapy.loader.ItemLoader([ item,selector,response,] ** kwargs ),它可以接收一个 Item 实例来指定要加载的 Item,然后指定 r来确定要解析的内容esponse 或者 selector; ItemLoader 实例还提供很多方法,如提供add_css()方法和add_xpath()方法来通过 css 和xpath 解析赋值,或使用add_value()方法来单独进行赋值等。

  • 更多其他的用法大家可以查看:https://doc.scrapy.org/en/latest/topics/loaders.html

2.修改spider,让itemloader完成素定位和元素解析

  • 首先重写spider中的parse_analyse方法,导入自定义的loader类,然后需要实例化这个loader类,将参数item和response传递到loader类中。 然后可以使用add_css()、add_xpath()、add_value()方法来提取和收集数据保存到loader类实例化对象中; 最后当所有数据被收集起来之后,调用ItemLoader.load_item()方法对结果进行解析并保存到一个item中,然后返回这个item;

def parse_analyse(self, response):        # 构建loader        xkd_itemload = MyItemLoader(item=XkdDribbbleSpiderItem(), response=response)        image_url = response.meta.get('a_image_url')        # 通过loader定位元素和解析元素        xkd_itemload.add_css('title', "[role='article'] header h2")        # 注意这里传递的是一个列表        xkd_itemload.add_value('image_url', [image_url])        xkd_itemload.add_value('url', response.url)        xkd_itemload.add_value('url_id', get_md5(response.url))        xkd_itemload.add_css('date', 'p span.date::text')        # 解析元素之后返回item        xkd_item = xkd_itemload.load_item()        # 将item返回        yield xkd_item

3.修改item数据模型

  • 修改item数据模型,需要导入from scrapy.loader.processors import MapCompose,可以在scrapy.Field中加入处理函数。MapCompose是一种处理器,由给定功能的组合构成,类似于Compose处理器,与此处理器的不同之处在于内部结果在函数之间传递的方式;

  • Scrapy还给我们提供了一个scrapy.loader.processors.TakeFirst()方法,用于返回第一个非空值(相当于extract_first()方法),常用于单值字段的输出处器,无参数;

from scrapy.loader.processors import TakeFirst, MapComposefrom datetime import datetimedef str_to_date(str_date):    str_date = str_date.strip()    date = datetime.strptime(str_date, '%b %d, %Y').date()    return date.strftime('%Y-%m-%d')class XkdDribbbleSpiderItem(scrapy.Item):    title = scrapy.Field()    image_url = scrapy.Field(        output_processor = MapCompose(lambda value: value)    )    date = scrapy.Field(        input_processor = MapCompose(str_to_date)    )    image_path = scrapy.Field()    url = scrapy.Field()    url_id = scrapy.Field()

看完上述内容,你们对如何引入ItemLoader和Item预处理函数有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何引入ItemLoader和Item预处理函数

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何引入ItemLoader和Item预处理函数

今天就跟大家聊聊有关如何引入ItemLoader和Item预处理函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.引入ItemLoader在项目的item.py文件中创建一个自定
2023-06-02

PHP 函数库如何处理输入和输出?

php 函数库提供了处理输入和输出操作的广泛功能,包括:输入函数:从输入源读取数据。输出函数:将数据写入输出目标。键盘输入函数:从标准输入读取数据。控制台输出函数:将数据打印到控制台。这些函数使其易于与外部系统和用户交互,创建功能强大的应用
PHP 函数库如何处理输入和输出?
2024-04-26

如何使用 PHP 函数进行数据预处理?

php 数据预处理函数可用于进行类型转换、数据清理、日期和时间处理。具体来说,类型转换函数允许变量类型转换(例如 int、float、string);数据清理函数可删除或替换无效数据(如 is_null、trim);日期和时间处理函数可进行
如何使用 PHP 函数进行数据预处理?
2024-05-02

PHP 函数中如何处理输入验证和数据过滤?

php 函数中的输入验证和数据过滤对于保护应用程序安全至关重要,它们包括:输入验证:验证数据类型、长度、模式等。数据过滤:转义字符、移除 html 标签、加密。使用实例:php 函数使用过滤器和验证处理用户表单数据。在 PHP 函数中实现输
PHP 函数中如何处理输入验证和数据过滤?
2024-04-26

golang函数式编程中如何处理输入和输出?

函数式编程使用管道和 goroutine 处理输入和输出。处理输入时,使用管道和 goroutine 对流数据并行处理。处理输出时,使用管道将数据从一个函数传递到另一个函数。实战案例中,使用管道将处理函数和输出函数连接起来,实现输入处理和输
golang函数式编程中如何处理输入和输出?
2024-05-01

泛型函数在Golang中如何处理指针和引用类型?

泛型函数在 go 中处理指针类型时,会收到原始变量的引用,允许修改变量值。引用类型则在传递时会被复制,使函数无法修改原始变量值。实战案例包括使用泛型函数比较字符串或数字切片。泛型函数在 Go 中如何处理指针和引用类型简介泛型是一个允许我
泛型函数在Golang中如何处理指针和引用类型?
2024-04-16

C++ 函数命名:如何处理重载函数和同名函数

重载函数和同名函数的命名规则不同。重载函数通过区分参数类型来命名,而同名函数通过命名空间来分组。实战案例:重载字符串比较函数使用不同的参数类型进行区分,而不同命名空间的 abs() 函数则使用命名空间缩写或前缀来分组。为了避免命名冲突,建议
C++ 函数命名:如何处理重载函数和同名函数
2024-05-03

SQLServer中如何处理数学运算和函数

在 SQL Server 中,你可以使用内置的数学函数和操作符来处理数学运算。以下是一些常用的数学函数和操作符:加法:使用加号(+)操作符来执行两个数字字段的加法操作,例如:SELECT num1 + num2 FROM table_nam
SQLServer中如何处理数学运算和函数
2024-04-09

php strtotime()和date()函数如何处理时间戳

今天小编给大家分享一下php strtotime()和date()函数如何处理时间戳的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一
2023-07-05

C++ 函数库如何处理图形和界面?

c++++ 函数库提供了多种图形和界面处理工具,包括:sfml(跨平台 2d 图形和音频库):用于开发精灵驱动的 2d 游戏和媒体播放器。qt(跨平台图形用户界面框架):用于开发桌面应用程序和媒体播放器。使用 C++ 函数库处理图形和界面
C++ 函数库如何处理图形和界面?
2024-04-18

C++ 函数库中如何处理文件和流?

文件和流处理是 c++++ 函数库中处理文件和流的关键要素。库提供流的概念,允许访问不同数据类型的统一接口。文件操作包括打开、关闭、读取和写入文件,实战案例展示了如何读取文件并打印到终端。此外,字符串流允许在内存中管理字符串数据,例如通过读
C++ 函数库中如何处理文件和流?
2024-04-18

C++ 函数指针如何用于回调函数和事件处理?

函数指针在 c++++ 中用于回调函数和事件处理,通过指向函数,允许函数传递其对方法的引用给其他函数。使用函数指针的优势包括:灵活性、可扩展性、代码解耦、可重用性以及异步通信。C++ 函数指针:回调函数和事件处理简介函数指针是一种指向函
C++ 函数指针如何用于回调函数和事件处理?
2024-04-17

如何在Python中进行数据预处理和特征工程

如何在Python中进行数据预处理和特征工程数据预处理和特征工程是数据科学领域中非常重要的一部分。数据预处理是指对原始数据进行清洗、转换和整理,以便进一步分析和建模。而特征工程则是指从原始数据中提取有用的特征,以帮助机器学习算法更好地理解数
2023-10-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录