[スパルタネットワーク開発総合クラス]整理3週間


今週は思ったより時間がなかったので、進捗が遅かったです.
今回はPythonとPythonのパッケージを使いましたが、またネットスクロール、MongoDB、Pythonは基礎が分かっているのでついていきやすいのですが、それ以外は初めての処理なので少しガタガタです.
他の言語に比べてPythonの長所は直感的で見やすいことで、変数を宣言するときに前にどんなタイプかを書く必要がないのが気持ちがいいです.しかも括弧がなく、タブで区切ることができます・・・
# 수학문제에서
f(x) = 2*x+3
y = f(2)
y의 값은? 7

# 참고: 자바스크립트에서는
function f(x) {
	return 2*x+3
}

# 파이썬에서
def f(x):
	return 2*x+3

y = f(2)
y의 값은? 7


fruits = ['사과','배','감','귤']

for fruit in fruits:
	print(fruit)
セットメニュー.
Pythonにカプセル化されたモジュール(機能セット)の集合.これらのパッケージの集合をライブラリと見なすことができます.
仮想環境では、各プロジェクトにパッケージを含めることができます.

FILE>Settings>Project:>Python Interpreterにアクセスすると、パッケージを表示してダウンロードできます.
+をクリックします.

必要なパッケージをインストールできます.
Webスクロール?
組織的で自動化された方法でWebを閲覧するプログラム.すなわち,Web上に存在するコンテンツを収集する.
パケットはrequestsとbs 4を使用します.

開発ツールをF 12で開きます.

必要な部分を右クリックしてCopy>Copyセレクタを行い、セレクタをコピーします.エンコーディング
import requests
from bs4 import BeautifulSoup

from pymongo import MongoClient
client = MongoClient('localhost', 27017) #로컬호스트 몽고db에 접속합니다.
db = client.dbsparta #dbsparta라는 db에 접속합니다. 없으면 자동으로 생성합니다.

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('https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

#old_content > table > tbody > tr:nth-child(2)
trs = soup.select('#old_content > table > tbody > tr')

#old_content > table > tbody > tr:nth-child(2) > td.title > div > a

#old_content > table > tbody > tr:nth-child(2) > td:nth-child(1)
#old_content > table > tbody > tr:nth-child(2) > td.point
for tr in trs:
    a_tag = tr.select_one('td.title > div > a')
    if a_tag is not None:
        title = a_tag.text
        rank = tr.select_one('td:nth-child(1) > img')['alt']
        star = tr.select_one('td.point').text
        doc = {
            'rank':rank,
            'title':title,
            'star':star
        }
        print(title, rank, star)

こうして出てきた
共通の部分はtrで保存し、残りの部分は.select oneはどのように指示しますか?
MongoDB
No SQL
DickShowner形式でデータを格納するDB.これは、各データに同じ値を指定する必要がなく、フリー・フォームのデータ・マウントに不利な一貫性が欠けている可能性があります.
結局DBなので.
  • ストレージ
  • 検索
  • 修正
  • 削除
  • あなたができる限り、ほとんど使えます.
    # 저장 - 예시
    doc = {'name':'bobby','age':21}
    db.users.insert_one(doc)
    
    # 한 개 찾기 - 예시
    user = db.users.find_one({'name':'bobby'})
    
    # 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
    same_ages = list(db.users.find({'age':21},{'_id':False}))
    
    # 바꾸기 - 예시
    db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
    
    # 지우기 - 예시
    db.users.delete_one({'name':'bobby'})
    上のWebスクロールとMongoDBを使用
    正確には、閲覧したページをデータベースに保存して練習します.
    from pymongo import MongoClient
    client = MongoClient('localhost', 27017)
    db = client.dbsparta
    
    ## 코딩 할 준비 ##
    
    target_movie = db.movies.find_one({'title':'매트릭스'})
    print (target_movie['star'])
    
    target_star = target_movie['star']
    
    movies = list(db.movies.find({'star':target_star}))
    
    for movie in movies:
        print(movie['title'])
    
    db.movies.update_one({'title':'매트릭스'},{'$set':{'star':0}})
    このように、保存されたマトリクス映画のスコアはゼロである.
    3週目の作業:
    Genie Musicの上位1~50曲にScrippingを行います
    順位や曲名が整然としていないため,空白を除くstrip()関数を用いた.
    import requests
    from bs4 import BeautifulSoup
    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(' https://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers )
    soup = BeautifulSoup(data.text, 'html.parser')
    #body-content > div.newest-list > div > table > tbody > tr:nth-child(1)
    trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
    #body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.number
    #body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info
    #body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.artist.ellipsis
    for tr in trs:
    rank = tr.select_one('td.number').text[0:2].strip()
    title = tr.select_one('td.info > a.title.ellipsis').text.strip()
    singer = tr.select_one('td.info > a.artist.ellipsis').text.strip()
    print(rank, title, singer)

    結果はこうでした.
    ちょっと待って、海門部分はtext[0:2]
    これは、文字の2番目にのみ出力されることを意味します.メールを送っただけで、うまくいかなかった.
    どうしてスパルタが3週間で終わるの?
    整理が少し簡単だが、仕方がない.もっと多くの行間を書くのはもっと難しいようだ.