item load 机制

将抓取数据解析进行结构化:

基础方法:  

spider:  获取网页页面response 》 选择器提取内容  》 对内容进行处理 》传递给item字段

使用加载机制:

spider:

spider:获取网页页面response 》 加载器提取内容(使用选择器)  》 传递给item处理

item:定义item对象的同时并配置内容处理函数 》处理1 》处理2》最终赋值


加载器数据提取方法:


spider:

from scrapy.loader import ItemLoader #导入模块,基本用法,实际使用自定义复写

item_loader= ItemLoader(item=XxxItem(),response=response)#实例化,传入item实例对象,response对象)

#三个核心函数,参数item字段名,选择器方法或其他值,生成一个列表对象
item_loader.add_css("title",".entry h1::text")

item_loader.add_xpath("title",'//div/a[id="555"]/text()')

item_loader.add_value("url", response.url)

my_item = item_loader.laod_item()

yield my_item 


item:

item 的字段对象有两个参数:

input_processor = MapCompose()# 表示对传递给item字段的值做一个预处理,使用内置的MapCompose,按函数顺序对传递进来的列表的每个值进行处理(可使用匿名函数)

output_processor = TakeFirst() #对预处理玩的值进行输出到item容器,使用内置函数:获取列表的第一个值

重载 itemload方法:来配置默认获取列表第一个值,定义一空函数来替换默认配置


from scrapy.loader.processors import MapCompose ,TakeFirst

from scrapy.loader import ItemLoader 





def func1(value):

return value

def ret(value)

returnvalue


class MyItemLoaderl(ItemLoaderL):

default_output_processor =  TakeFirst()

class CrawlItem(scrapy.Item):

title = scrapy.Field(

input_processor=Mapcomppose( func1, func2)

output_processor =  ret()  #重载自定义loaderItem的默认方法,获取原始列表

)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容