抓下來的資料通常還要經過一系列的統計分析再呈現結果給使用者。這種資料一般稱為原始資料,大部分情況下抓回來後會儲存在所謂的 NoSQL 中。這兩天就會跟著大家一起建立並使用 MongoDB
來儲存資料。
可以選擇要在本機安裝獨立的資料庫實體或者使用 Docker
容器。
直接使用官方的 MongoDB image。
docker pull mongo
docker run --name ithome-mongo -e MONGO_INITDB_ROOT_PASSWORD=mysecretpassword -v E:\ithome-2019\mongo:/data/db -d mongo
可以使用官方的 MongoDB Compass 來作為 MongoDB 的管理工具。如果是用本機安裝的,預設就會包含了;如果是用 Docker 容器就需要到網站上下載。
因為不需要定義 metadata,所以到這邊就可以開始使用了。其實連 Collection 都可以不用建,執行過程中如果找不到就會自動建立了。
pipenv shell
pipenv install pymongo
from pymongo import MongoClient
from datetime import datetime
host = 'localhost'
dbname = 'ithome2019'
client = MongoClient(host, 27017)
print('資料庫連線成功!')
db = client[dbname]
article_collection = db.article
article = {
'title': '【Day 0】前言',
'url': 'https://ithelp.ithome.com.tw/articles/10215484',
'author': 'Rex Chien',
'publish_time': datetime(2019, 9, 15, 15, 50, 0),
'tags': '11th鐵人賽,python,crawler,webscraping,scrapy',
'content': '從簡單的商品到價提醒,到複雜的輿情警示、圖形辨識,「資料來源」都是基礎中的基礎。但網路上的資料龐大而且更新很快,總不可能都靠人工來蒐集資料。',
'view_count': 129
}
article_id = article_collection.insert_one(article).inserted_id
print(f'資料新增成功!ID: {article_id}')
client.close()
執行之後就可以在資料庫中看到多了一筆紀錄,其中多了一個 _id
欄位,是由 MongdDB 自行產生的識別值,之後也會用這個欄位來跟回應做關聯。
明天會繼續把前兩天的程式碼修改成使用 MongoDB 的版本。