• scrapy_ItemLoader


    什么是Itemloader?

           一种容器,实现直白高效字段提取

    直接赋值取值的方式,会出现一下几个问题

    1. 代码量一多,各种css和xpath选择器,充斥整个代码逻辑,没有规则,不利于维护
    2. 对于一个字段的预处理,不明确,也不应该出现在主逻辑中

    如何解决以上两个问题?

           通过scrapy中的ItemLoader模块来处理

    那如何使用呢?

      1. 声明一个容器

      2. 往容器中添加值

      3. 加载容器

      4. 把值传yield给 items

        def analysie_go(self, response):
            """解析页面,提取字段值"""
            # 通过response.meta.get方式获取meta传过来的值
            img_url = response.meta.get('img_url', '0')
            # 声明一个容器,接收item实例和response参数
            load_item = ItemLoader(item=JobboleItem(), response=response)
            # 指定value添加值
            load_item.add_value('img_url', img_url)
            load_item.add_value('cont_url', response.url)
            load_item.add_value('cont_id', response.url)
            # css方式解析值
            load_item.add_css('title', '.entry-header h1::text')
            load_item.add_css('publish_time', '.entry-meta-hide-on-mobile::text')
            # xpath解析值
            load_item.add_xpath('cont', '//div[@class="entry"]//text()')
            load_item.add_css('link_num', '.vote-post-up h10::text')
            load_item.add_css('collection_num', '.bookmark-btn::text')
            load_item.add_css('comment_num', '.post-adds a span::text')
            # 加载load_item()
            article_items = load_item.load_item()
            # 把获取的字段交给items
            yield article_items
    

      

  • 相关阅读:
    NSPredicate
    label 下划线加自动换行
    【搬运】快速增加文档注释
    NSSortDescriptor 数组排序
    【搬运】打开模拟器沙盒目录
    NSTimer 详解
    Android打开外部DB文件
    图片压缩与缓存
    StartService与BindService
    Android发送通知栏通知
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/7237443.html
Copyright © 2020-2023  润新知