Summary #3 Python, Web-crawling, MongoDB


1. Python


コンピュータ言語翻訳パッケージ(変換支援)

基本構文


既存のJavaScript構文よりも直感的
1)変数
let無効
console.出力はprint()でありlog()ではない
2)資料型
同様にletを無効にする
List、dictはJavaScript形式と同じです
3)関数
function 함수이름() {
	실행문
}
console.log()
既存の出力方式から
def 함수이름():
	실행문
4則演算として複数の関数値を使用する場合は、結果値を使用します.
result = 함수이름() + 함수이름()
print(result)
出力先
4)条件文
既存のJavaScript構文
if (조건) {
	실행문
} else {
	실행문
}
python構文
if 조건:
	print()
else:
	print()
5)繰り返し文
フォーム#フォーム#
無条件にリストとともに使用
fruits = ['사과','배','감','귤']

for fruit in fruits:
	print(fruit)
既存のJavaScript構文
for (let i = 0; i < length(범위); i++) {
	실행문
}
python構文
for 꺼내쓰고자하는 것 in 리스트:
	print()

Pythonパッケージのインストール(外部ライブラリ)


ライブラリはpip(Python install package)を使用して仮想環境(venv)にインストールされます.
≪仮想環境|Virtual Environment|oem_src≫:実行環境を分離するプロジェクト固有のツール・ボックス
Mac:PyCharm-Python Interpreter,「+」ボタンを押してパッケージをインストール
1)要求パッケージ
デフォルト設定
import requests

r = requests.get('정보를 get하고자 하는 url')
rjson = r.json()

gus = rjson['list']

for gu in gus:
	print()

2.スクロール(Web scraping)


最新情報のフィルタ処理
bs 4(美化グループ4)パッケージの追加インストールが必要です

デフォルト設定

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'}
//headers 값은 만지지 않기!

data = requests.get('정보를 get 하고자 하는 url',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')
1)select(選択によるデータのロード)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')

soup.select('상위태그명 > 하위태그명 > 하위태그명')

soup.select('태그명[속성="값"]')

//한개만 가져오고 싶은 경우
soup.select_one('위와 동일')
2)選択者の検索方法
Webページを右クリック[チェック]
目的のラベルを右クリック
copy-copy selector

3. MongoDB


DB(データベース):データの積み重ね(非表示)
robo 3 T:データの蓄積を可視化するプログラム

なぜDBを使うのですか?


可用性を向上させるために、

データベースの2種類


1)SQL:定型化しにくい/変更しやすい/分析しやすい
2)NoSQL:非構造化/変更しやすい/SQLより分析しにくい
MongoDBはNoSQLに属します.

pymongoパッケージのインストール


mongodbを操作するためのライブラリ
デフォルト設定
from pymongo import MongoClient           
client = MongoClient('localhost', 27017)  
// mongoDB는 27017 포트 사용함
db = client.dbsparta
1)挿入(データベースにデータを挿入)
//'users'라는 collection에 {'name':'이름','age':숫자}를 넣습니다.

db.users.insert_one({'name':'john','age':30})
2)find(データベースでデータを検索)
//데이터 모두 보기

all_users = list(db.users.find({}))

//특정 조건(같은 나이로 설정됨)의 데이터 모두 보기
//'_id'값은 랜덤으로 지정됨으로 'false'처리하여 찾지 않음

same_ages = list(db.users.find({'age':숫자},{'_id':False}))

//하나만 찾고자 할때(find_one)

user = db.users.find_one({'name':'이름'})
3)update one/マルチ(データベースデータ変更)
1つのDBを1つ変更して、すべての変更は多くの使用を使います
db.people.update_one({찾을조건},{ '$set': {어떻게바꿀지} })
//찾을조건과 어떻게바꿀지는 key:value 형태의 객체로 입력
4)delete(データベースデータ削除)
1つのDBを1つ削除して、すべて削除してたくさん使います
少ない機能
db.people.delete_one({삭제할조건})
//삭제할조건은 key:value 형태의 객체로 작성

4.ジニー音楽の上位1~50曲をブラウズ



索引とスライシング


≪索引|Index|oem_src≫:索引番号を使用して特定の場所の文字を抽出します.
スライド:[start:stop:step]を使用して複数の文字を抽出する
startは、抽出する文字列の頭文字のインデックスです.
stopは抽出する文字列の最後の文字のindex+1であり、
Stepはインクリメンタルと省略でき、デフォルト値は1
例)
text = 'ABCD'
text[0:2:1]または[0:2]
最初の文字「A」のインデックス値は0/である.
前の「B」のインデックス値1+1=2/
増幅のデフォルト1
=A、B出力
rank = tr.select_one('td.number').text[0:2]
中出力テキストのみの場合
1
(공백)
1상승
テキストを整理する必要があります.
text[0:2]を適用すると、「1」の残りの部分だけが空になります.

strip関数(不要な内容を消去)


strip()を使用する場合、()が空の場合は空白をクリアします.
rank = tr.select_one('td.number').text[0:2].strip()
残りの空白部分をクリアし、rankを整理!