1週間の振り返り
3週目の途中で講義動画などの差し替えがあったため1週間間が空いたので空いている時間で1週目~2週目までの復習に時間を充てることができたと思う。今回の3週目からより難易度がぐっと上がった感じがした。1週間で学んだこと
- Python
プロジェクトごとに仮想環境を構築できる(ほかのプロジェクト上には影響がない)
必要なライブラリーはパッケージを追加インストールし使用する(使用する際の宣言は必要)
実際の記載したコードの実行結果を確認する際にはprint()を使用
hello.py
test = 'テスト'
print(test)
リスト型とDictionary型はjavascriptと考え方は同じ
hello.py
#リスト型
a=['りんご','なし','かき']
print(a[0]) # りんご
#Dictionary型
a= {}
a= {'name':'太郎','age':24}
# aの値は? {'name': '太郎'、 'age': 24}
# a['name']の値は? '太郎'
関数の定義
hello.py
f(x) = 2*x+3
y = f(2)
# JavaScriptの場合
function f(x) {
return 2*x+3
}
# Pythonの場合
def f(x):
return 2*x+3
条件分岐と繰り返し
hello.py
#条件分岐はif/elseで構成する
age = 25
if age > 20:
print("成人です")
else:
print("未成年です")
#繰り返しはfor/inで指定
#Pythonで繰り返しはリストの要素を1つずつ取り出す際に使用
fruits = ['りんご','なし','かき','みかん']
for fruit in fruits:
print(fruit)
- ウェブスクレイピング(クローリング)
スクレイビングとクローリングの違い-
スクレイビング
特定のデータ構造から不要なデータを除去し、重要な情報を抽出することを指す。
Web上の情報をスクレイピングすることを、Webスクレイピングと呼ぶこともある。 -
クローリング
Web上で様々なサイトを巡回し情報の保存や複製など様々なことを行うことを指す。情報を集める目的として使われる。
-
基本クローリング設定用
dbprac.py
import requests
from bs4 import BeautifulSoup
URL = "https://movies.yahoo.co.jp/"
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')
よく使う基本コード
dbprac.py
# 保存 - 例
doc = {'name':'太郎','age':21}
db.users.insert_one(doc)
# 一つ探す - 例
user = db.users.find_one({'name':'太郎'})
# 複数検索 - 例 (_id値を除いて出力)
all_users = list(db.users.find({},{'_id':False}))
# 変更 - 例
db.users.update_one({'name':'太郎'},{'$set':{'age':19}})
# 消去 - 例
db.users.delete_one({'name':'太郎'})
今週の課題提出
課題
billboard.py
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.pmuxf9z.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.dbsparta
URL = "https://www.billboard-japan.com/charts/detail?a=hot100"
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')
musics = soup.select('#content2 > div > div.leftBox > table > tbody > tr')
for music in musics:
rank = music.select_one('td > span')
if rank is not None:
rank = rank.text
title = music.select_one('p.musuc_title').text.strip()
artist = music.select_one('p.artist_name').text.strip()
print(rank, title, artist)