码迷,mamicode.com
首页 > 其他好文 > 详细

爬虫——使用ItemLoader维护item

时间:2017-11-02 21:25:31      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:apc   自定义   pos   程序代码   item   led   spider   获取   import   

在item的Filed()中设置参数函数,可以用来预处理item字段的数据,另一方面也方便程序代码的管理和重用  

item中

from scrapy.loader.processors import MapCompose, TakeFirst
import scrapy
from scrapy.loader import ItemLoader

def add(value):
   # 在MyItem中调用的函数,对输入的数据进行指定的处理后返回值
  return value + ‘HELLO-WORLD‘

def fun(value):
   return value + do_something


class MyItemLoader(ItemLoader):
  # 自定义ItemLoader类,继承自ItemLoader,实现默认提取第一个值,用来自动实现output_process=TakeFirst()
   default_output_processor = TakeFirst()


class MyItem(scrapy.Item):
  ‘‘‘
  # input_process=MapCompose(add)可以使用外置函数add对传入的item字段进行预处理
  # MapCompose()里的参数可以是任意函数,例子中add是外置函数,也可以是lambda匿名函数
  # output_process=TakeFirst()
  # TakeFirst()只提取第一个值
  当自定义了ItemLoader,即MyItemLoader类后,output_process就可以省略了
  ‘‘‘

  item = scrapy.Field(
  input_process=MapCompose(add),
  #output_process=TakeFirst()
  )

 

spider中

from scrapy.loader import ItemLoader
from spider_path.items import MyItem
from ... import MyItemLoader # 导入自定义的ItermLoader

# 通过ItemLoader加载MyItem中的字段, 这里ItemLoader被重写成了MyItermLoader
item_loader= MyItemLoasder(item=MyItem(), response=response)

# 通过css,xpath,value提取
item_loader.add_css(‘MyItem中的字段‘,‘css选择器提取路径‘)
item_loader.add_xpath(‘MyItem中的字段‘,‘xpath选择器提取路径‘)
item_loader.add_value(‘MyItem中的字段‘,获取的值)

my_item = item_loader.load_item()
yield my_item

爬虫——使用ItemLoader维护item

标签:apc   自定义   pos   程序代码   item   led   spider   获取   import   

原文地址:http://www.cnblogs.com/shouzhong/p/7773974.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!