scrapy 2.3 使用項目加載器填充項目

2021-06-07 14:45 更新

要使用項加載器,必須首先實例化它。您可以使用 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位置提取字段:

  1. ?//div[@class="product_name"]?
  2. ?//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()? 電話。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號