見出し画像

スパルタコーディングクラブ 短期集中プログラミングコース 3週目

スパルタコーディングクラブ 短期集中プログラミングコース 3週目
プログラミングノートを書きます!



Python

webページを作る骨組み・装飾・動きを渡してくれるサーバーを、Pythonで作る!

ダウンロードリンク:https://www.python.org/ftp/python/3.8.6/python-3.8.6-amd64.exe

重要:Add Python 3.8 to PATH にチェックする
→ そうすることで自動で環境変数を設定してくれる(後から環境変数の変更も可能)https://docs.python.org/ja/3.8/using/windows.html#finding-the-python-executable

Pythonをインストールする = 翻訳パッケージのインストール
パソコンは0と1しか理解してくれないから、Pythonで書いた言葉を0と1に翻訳してくれるやつを準備するということ!

venv:Pythonが動く仮想空間のこと
これがあることで、プロジェクトごとに分けてライブラリを管理することができる

ライブラリ:Pythonはライブラリが充実している
※モジュール/パッケージ/ライブラリの違い:https://it-biz.online/python/import/

requestsライブラリ:取得したデータを人間が使えるようにしてくれるもの。jsでいうところのFetch


クローリング(ウェブスクレイピング)

beautifulsoup4ライブラリを使用する

↓ Pythonで実行するときのお作法

import requests
from bs4 import BeautifulSoup  # bs4というライブラリのBeautifulSoupというパッケージをインストールする

# スクレイピングのお作法
URL = "https://www.billboard-japan.com/charts/detail?a=hot100"  # クローリングしたいURL
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(URL, headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')

DB

SQL:データを入れる場所(項目)が元々決まっている
NoSQL:データを入れる場所(項目)を、自由に決められる

SQL
決まっているので、間違いが起きにくい。データ取得の時間も早い
データが決まっている、それがあまり変わらない場合にオススメ

NoSQL
柔軟性がある
ベンチャーやスタートアップのシステムにオススメ

※サービス初期はNoSQLで、ある程度型が決まってきたらSQLに変更することが多い


mongoDB

無料で利用可能。クラウドで使える
講義でやること:Yahoo映画のリストを持ってきて、DBに入れる

登録サイト:https://account.mongodb.com/account/register

Pythonでは、pymongo, dnspython のライブラリを使用する

↓ Pythonから操作するときのお作法

from pymongo import MongoClient

# mongoDBと接続する
client = MongoClient('mongodb+srv://sparta:test@cluster0.rjottkc.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.dbsparta

↓ Pythonから操作するときのCRUD


# データを入れる
doc = {'name': '太郎', 'age': 27}
db.users.insert_one(doc) # users はコレクションを指定している

# すべてのデータを抽出する
all_users = list(db.users.find({}))
for a in all_users:      # 繰り返し文のすべての結果値を見る
    print(a['name'])
# すべてのデータを抽出して、idの項目だけ表示しない
all_users_noID = list(db.users.find({},{'_id':False}))

# データを1つだけ取得する
user = db.users.find_one({})
print(user) # 条件を指定していないので、DBの一番最初のデータを取得する
# 取得するデータを指定する
user_taro = db.users.find_one({'name':'太郎'})

# データを修正する
db.users.update_one({'name':'太郎'},{'$set':{'age':19}})

# データを削除する
db.users.delete_one({'name':'太郎'})

自身の課題

Billboardをスクレイピングして、ランキングをターミナル(?)に表示させる

やってみて
・ランキングの所々に広告があり、そのことを見つけるまで(エラーの原因に気が付くまで)時間がかかった
・広告を飛ばしてランキングだけを表示させるために、for文を使って試したが、何を判断基準にしたらよいか自分では分からなかった
・解説や、判断基準の見つけ方などがあったら嬉しかったかもしれない。


感想&反省

・動画2個目
映画の情報をcard1つ1つに入れたいから、そのcardを囲っているdivタグにidを付けてscriptから操作できるようにする
というのが、慣れてないとすぐにイメージするのが難しいし自分もこうやって文章化してみて理解したみたいなところある…もう少し説明が分かりやすくなるともっと嬉しいかも!

・今さら気が付いたけど、今まで書いてたのはjsだから、変数の宣言時にタイプを指定しなくてもいいんだね!!tsになるとタイプの指定が必須になる

・オープンAPIを準備してくださっているのはやはり有難いし理解が深まりやすいと感じた。

・講義資料に検索かけるときのキーワードが載ってて、めっちゃありがたかった…。検索ワードは誰も教えてくれなかったからプロに教えてもらえてうれしい。
・他にも、講義資料にしかない情報や考え方があった。難しそうだと思ったら、先に資料を見てから動画を見ると理解が深まりやすかった。

・1週目から繰り返し「覚えるなググれ、考えるなコピペしろ」を言ってくれるの面白くて好き。検索能力と頭を使ったコピペがプログラミングの肝

・関数の説明で「引数」という言葉や概念を説明しないのは意図があるのだろうか…?

・この前jsやったと思ったら早速pythonで、やはり進むスピードの速さを感じる。
・とりあえずコピペして、実行して、講義についていくのでいっぱいいっぱいなところがあった。

・課題が一気に難しくなったように感じた。。また、今までは課題の完成まで動画で解説してくださっていたのが、今回は課題の説明と少しのポイントだけだった。難易度が上がっているように感じていたから解説も聞けるのかと思っていた。

・Pythonの記法や書き方のポイントを新しく講義の中で知れると期待していたが、正直自分が業務で使っている範囲を出る知識はあまりなかった。mongoDBとの接続やスクレイピングのやり方は初めて学ぶ内容だったので勉強になったが、すでに基本構文が書ける場合はそれ以上のものを期待するのは難しいと感じた。

この記事が気に入ったらサポートをしてみませんか?