W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
要使用項加載器,必須首先實例化它。您可以使用 item object 或者沒有,在這種情況下 item object 在項目加載器中自動創(chuàng)建 __init__ 方法使用 item 中指定的類 ?ItemLoader.default_item_class
? 屬性。
然后,開始將值收集到項加載器中,通常使用 Selectors . 您可以向同一個項目字段添加多個值;項目加載器稍后將知道如何使用適當(dāng)?shù)奶幚砗瘮?shù)“聯(lián)接”這些值。
注解
收集的數(shù)據(jù)以列表的形式在內(nèi)部存儲,允許向同一字段添加多個值。如果 ?item
? 參數(shù)是在創(chuàng)建加載程序時傳遞的,如果項的每個值已經(jīng)是iterable,則將按原樣存儲;如果是單個值,則將用列表包裝。
下面是在 Spider ,使用 Product item Items chapter ::
from scrapy.loader import ItemLoader
from myproject.items import Product
def parse(self, response):
l = ItemLoader(item=Product(), response=response)
l.add_xpath('name', '//div[@class="product_name"]')
l.add_xpath('name', '//div[@class="product_title"]')
l.add_xpath('price', '//p[@id="price"]')
l.add_css('stock', 'p#stock]')
l.add_value('last_updated', 'today') # you can also use literal values
return l.load_item()
通過快速查看該代碼,我們可以看到 ?name
? 正在從頁面中的兩個不同的xpath位置提取字段:
//div[@class="product_name"]
?//div[@class="product_title"]
?換句話說,通過使用 ?add_xpath()
? 方法。這是將分配給 ?name
? 以后再說。
之后,類似的呼叫用于 ?price
? 和 ?stock
? 字段(后者使用CSS選擇器 ?add_css()
? 方法),最后 ?last_update
? 直接用文字值填充字段 (?today
? )使用不同的方法: ?add_value()
? .
最后,當(dāng)收集所有數(shù)據(jù)時, ?ItemLoader.load_item()
? 方法,它實際返回用以前提取和收集的數(shù)據(jù)填充的項 ?add_xpath()
? , ?add_css()
? 和 ?add_value()
? 電話。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: