item load 機(jī)制

將抓取數(shù)據(jù)解析進(jìn)行結(jié)構(gòu)化:

基礎(chǔ)方法: ?

spider: ?獲取網(wǎng)頁頁面response 》 選擇器提取內(nèi)容 ?》 對內(nèi)容進(jìn)行處理 》傳遞給item字段

使用加載機(jī)制:

spider:

spider:獲取網(wǎng)頁頁面response 》 加載器提取內(nèi)容(使用選擇器) ?》 傳遞給item處理

item:定義item對象的同時并配置內(nèi)容處理函數(shù) 》處理1 》處理2》最終賦值


加載器數(shù)據(jù)提取方法:


spider:

from scrapy.loader import ItemLoader #導(dǎo)入模塊,基本用法,實(shí)際使用自定義復(fù)寫

item_loader= ItemLoader(item=XxxItem(),response=response)#實(shí)例化,傳入item實(shí)例對象,response對象)

#三個核心函數(shù),參數(shù)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 的字段對象有兩個參數(shù):

input_processor = MapCompose()# 表示對傳遞給item字段的值做一個預(yù)處理,使用內(nèi)置的MapCompose,按函數(shù)順序?qū)鬟f進(jìn)來的列表的每個值進(jìn)行處理(可使用匿名函數(shù))

output_processor = TakeFirst() #對預(yù)處理玩的值進(jìn)行輸出到item容器,使用內(nèi)置函數(shù):獲取列表的第一個值

重載 itemload方法:來配置默認(rèn)獲取列表第一個值,定義一空函數(shù)來替換默認(rèn)配置


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的默認(rèn)方法,獲取原始列表

)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容