航海99辞書学習の概要

4987 ワード

Pythonでスクロール(トリム)


@デマンド・ライブラリ
  • requests
  • bs4
  • @デフォルトコード
    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://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)
    
    soup = BeautifulSoup(data.text, 'html.parser')
    @必要な情報を出力
    @ 하나만 가져오기
    logo = soup.select_one('#header > div.special_bg > div > div.logo_area > h1 > a > span')
    print(logo)
    
    @ 여러개 가져오기
    lists = soup.select('#old_content > table > tbody > tr')
    
    for item in lists:
        print(item)

    MongoDBの使用


    インストール@MongoDBの確認
    localhost:27017接続先
    "It looks like you are trying to access MongoDB over HTTP on the native driver port."
    画面が上のようでしたらOKです
    @デマンド・ライブラリ
  • pymongo
  • @デフォルトコード
    from pymongo import MongoClient
    client = MongoClient('localhost', 27017)
    db = client.dbsparta
    
    # 저장 - 예시
    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'})

    Flashインプリメンテーションサーバの使用


    @必須フレームワーク
  • flask
  • @デフォルトフォルダ構造
    project
    ㄴ venv
    ㄴ static
    	ㄴ css
        	ㄴ images
    ㄴ templates
    	ㄴ index.html
    ㄴ app.py
    @デフォルトコード
    from flask import Flask, render_template
    app = Flask(__name__)
    
    @app.route('/')
    def home():
       return render_template('index.html')
    
    if __name__ == '__main__':  
       app.run('0.0.0.0',port=5000,debug=True)

    APIの実装


    @デマンド・ライブラリ
  • flask
  • request
  • jsonify
  • @デフォルトコード
    from pymongo import MongoClient
    
    from flask import Flask, render_template, jsonify, request
    
    app = Flask(__name__)
    
    client = MongoClient('localhost', 27017)
    db = client.dbsparta
    
    
    # HTML 화면 보여주기
    @app.route('/')
    def home():
        return render_template('index.html')
    
    
    # API 역할을 하는 부분
    @app.route('/api/list', methods=['GET'])
    def show_stars():
        // request.args.get('title_give') // 해당 변수로 들어온 값 받기
        movie_star = list(db.mystar.find({}, {'_id': False}).sort('like', -1))
        return jsonify({'movie_stars': movie_star})
    
    
    @app.route('/api/like', methods=['POST'])
    def like_star():
        name_receive = request.form['name_give']
        target_star = db.mystar.find_one({'name': name_receive})
        current_like = target_star['like']
    
        new_like = current_like + 1
        db.mystar.update_one({'name': name_receive}, {'$set': {'like': new_like}})
    
        return jsonify({'msg': '좋아요 완료!'})
    
    
    @app.route('/api/delete', methods=['POST'])
    def delete_star():
        name_receive = request.form['name_give']
        db.mystar.delete_one({'name': name_receive})
        return jsonify({'msg': '삭제되었습니다!'})
    
    
    if __name__ == '__main__':
        app.run('0.0.0.0', port=5000, debug=True)

    AWSへの配備


    @ダッシュボードリンク
    https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2#Home :
  • インスタンスの作成
  • aws購読
  • EC 2インスタンス作成(Ubuntu Server 18.04 LTS)
    *インスタンスの作成時に鍵ペアをダウンロード
  • リモート接続
  • git bashを実行
  • 원격 접속 시도
    $ ssh -i 키페어경로 ubuntu@서버IP
  • サーバの設定
  • filezillaアップロードプロジェクトファイル
  • shell scriptサーバ環境の設定initial_ec2.shサーバにファイルをアップロード
  • initial_ec2 파일권한 부여하기
    $ sudo chmod 755 initial_ec.sh
    
    파일 실행하기
    파일경로/initial_ec.sh
  • サーバ環境へのモジュールの追加
  • 방법)
    pip install 모듈명
    
    예시)
    pip install flask
    pip install pymongo
  • オープンポート
  • インスタンスの「≪セキュリティ|Security|emdw≫」タブ->セキュリティ・グループ->バインド・ルールのEditインバウンド・ルールをクリック
  • nohupは常にサーバを有効にします
  • 실행하기
    nohup python app.py &
    
    종료하기
    ps -ef | grep 'app.py' 중 해당파일을
    kill -9 해당파일번호