官术网_书友最值得收藏!

第4章 使用Item封裝數(shù)據(jù)

在第3章中,我們學(xué)習(xí)了從頁(yè)面中提取數(shù)據(jù)的方法,本章來(lái)學(xué)習(xí)如何封裝爬取到的數(shù)據(jù)。以爬取某圖書(shū)網(wǎng)站的書(shū)籍信息為例,對(duì)于網(wǎng)站中的每一本書(shū)可以提取出書(shū)名、價(jià)格、作者、出版社、出版時(shí)間等多個(gè)信息字段。應(yīng)該用怎樣的數(shù)據(jù)結(jié)構(gòu)來(lái)維護(hù)這些零散的信息字段呢?最容易想到是使用Python字典(dict)。

回顧第1章example項(xiàng)目中BooksSpider的代碼:

        class BooksSpider(scrapy.Spider):
          ...
          def parse(self, response):
              for sel in response.css('article.product_pod'):
                name = sel.xpath('./h3/a/@title').extract_first()
                price = sel.css('p.price_color::text').extract_first()
                yield {
                    'name': name,
                    'price': price,
                }
          ...

在該案例中,我們便使用了Python字典存儲(chǔ)一本書(shū)的信息,但字典可能有以下缺點(diǎn):

(1)無(wú)法一目了然地了解數(shù)據(jù)中包含哪些字段,影響代碼可讀性。

(2)缺乏對(duì)字段名字的檢測(cè),容易因程序員的筆誤而出錯(cuò)。

(3)不便于攜帶元數(shù)據(jù)(傳遞給其他組件的信息)。

為解決上述問(wèn)題,在Scrapy中可以使用自定義的Item類封裝爬取到的數(shù)據(jù)。

主站蜘蛛池模板: 交口县| 晋中市| 城固县| 黄石市| 辽阳市| 南澳县| 青河县| 通江县| 阳泉市| 濮阳市| 十堰市| 汨罗市| 阿瓦提县| 连城县| 道孚县| 青岛市| 汝城县| 洛川县| 梓潼县| 甘泉县| 长汀县| 社旗县| 军事| 河北区| 兴安盟| 青海省| 永泰县| 临桂县| 临澧县| 措美县| 嘉兴市| 华容县| 古丈县| 宜州市| 台江县| 邛崃市| 山西省| 新巴尔虎右旗| 精河县| 牟定县| 长丰县|