- 精通Scrapy網(wǎng)絡(luò)爬蟲(chóng)
- 劉碩
- 328字
- 2020-11-28 14:59:40
第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ù)。
推薦閱讀
- Learning NServiceBus(Second Edition)
- Android Jetpack開(kāi)發(fā):原理解析與應(yīng)用實(shí)戰(zhàn)
- Python語(yǔ)言程序設(shè)計(jì)
- Oracle Database 12c Security Cookbook
- Learning JavaScript Data Structures and Algorithms
- Learning jQuery(Fourth Edition)
- Mastering AWS Security
- Advanced UFT 12 for Test Engineers Cookbook
- Sails.js Essentials
- 30天學(xué)通C#項(xiàng)目案例開(kāi)發(fā)
- Drupal Search Engine Optimization
- 劍指大數(shù)據(jù):企業(yè)級(jí)電商數(shù)據(jù)倉(cāng)庫(kù)項(xiàng)目實(shí)戰(zhàn)(精華版)
- HTML5程序開(kāi)發(fā)范例寶典
- Java核心技術(shù)速學(xué)版(第3版)
- Thymeleaf 3完全手冊(cè)