내일배움캠프 D+1

유제협·2021년 9월 14일
0

Crawling할때는 정보를 찾아서 활용한다는 점에서 재밌었지만 flask는 조금 복잡한게 없지않아 있어 이해하는데에 시간이 오래 걸렸다.

  1. Crawling

      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('url',headers=headers)
    
      soup = BeautifulSoup(data.text, 'html.parser')
      
      title = soup.select_one('경로 copy > copy selector')
    
      title = soup.select_one('경로').text  # -> 출력에서 text만 가져온다.
      title = soup.select_one('경로')['href']  # -> href 값을 가져온다. (다른것도 가능)
      title = soup.select('경로')  # -> 리스트 형식으로 가져온다(여러개 가져옴)

 2.Pymongo
    from pymongo import MongoClient
    client = MongoClient('localhost', 27017) # 내 컴퓨터에서 돌아가고있는 mongoDB에 접속 할 겁니다.
    db = client.dbsparta # dbsparta 라는 db 이름으로 접속 할 겁니다.
   
  1) insert  -> 딕셔너리 만들어서 몽고에 넣는다.
    doc = {'name':'bobby','age':21}
    db.users.insert_one(doc)  # 위 doc(딕셔너리)를 users에 넣어준다.(db > users > insert_one(doc))

  2) find
    user = db.users.find_one({'name':'bobby'},{}) # 한개만 찾기
    same_ages = list(db.users.find({'age':21},{'_id':False})) #  age:21 인값 표시 하지만 _id는 표시하지 않는다.
    same_ages = list(db.users.find({},{'_id':False})) # find{}값을 비워둔경우 모든 값을 가져온다.

  3) update
    db.users.update_one({'name':'bobby'},{'$set':{'age':19}}) # name이 bobby인 것을 찾아 age를 19로 바꿔라.
    db.users.update_many({'name':'bobby'},{'$set':{'age':19}}) # name이 bobby인 것을 모두 찾아 age를 19로 바꿔라.(위험해서 잘 쓰지 않는다.)

  4) delete
    db.users.delete_one({'name':'bobby'}) # 해당 값 하나 지우기
    db.users.delete_many({'name':'bobby'}) # 해당 값 다 지우기 (위험해서 잘 쓰지 않는다.)
3.Flask
 작업 순서

1. app.py파일, static,templates(index.html)폴더 생성

2. app.py파일과 index.html 파일이 잘 연결 되어있는지 확인

3. app.py의 post 부분 작업시작
     1) 읽어올 값 갯수 파악 및 설정
         sample1_receive = request.form['sample1_give']
         sample2_receive = request.form['sample2_give']
         sample3_receive = request.form['sample3_give']
     2) 딕셔너리 만들어서 db에 저장
         doc = {
                'sample1': sample1_receive,
                'sample2': sample2_receive,
                'sample3': sample3_receive
               }
         db.clientName.insert_one(doc)

4. index.html의 type:'post' 부분 작업
      1) $.ajax 위에 읽어올 값 정의해준다
         let sample1 = $("#sample-name").val()
         let sample2 = $("#sample-count").val()
         letsample3 = $("#sample-address").val()
      2) 위에서 읽어온 값을 app.py의 post에서 저장 할 수 있게 보내준다.
         data: {'sample1_give': sample1, 'sample2_give': sample2,'sample3_give': sample3}
      3) 필요에 의해 type:'post' 부분 마지막에 초기화를 추가해 준다.
         window.location.reload();

5. app.py의 GET 부분 작업시작
      1) 저장된 값을 전부 가져와 잠시 원하는 key값에 넣어준다.
         samples = list(db.clientName.find({}, {'_id': False}))
         return jsonify({'all_samples': samples})

6. index.html의 type:'GET' 부분 작업
      1) success:function 안에 앞에서 저장 한 값을 가져와 원하는 위치에 출력해 준다.
         success: function(response){
             let sample = response['all_samples']
             for (let i=0; i < sample.length; i++){
                   let name = sample[i]['name']
                   let count = sample[i]['count']
                   let address = sample[i]['address']
                   let temp_html = ` < tr >
                                           < th > ${name} < / th >
                                           < td > ${count} < / td >
                                           < td > ${address} < / td >
                                   < / tr > `
                   $("#samples-box").append(temp_html)
              }
         }
7. 직접 입력해 보면서 구동 확인하고 ROBO 3T로 잘 저장 되는지 확인한다.


0개의 댓글