Python (38)

반응형

 

beautifulsoup : 뷰티풀수프

 

 

전에 작업한 my_flask.py 파일을 이용한다.

해당 파일을 실행 후 localhost로 확인 > 켜 놓은 상태로 추가 파일을 만들어 진행한다.

 

my_flask.py

from flask import Flask,request,render_template
from day08.daoemp import Daoemp

app = Flask(__name__)

@app.route('/')
@app.route('/emp_list')
def emp_list():
    de = Daoemp()
    list = de.selectList()
    return render_template("emp_list.html", list=list)

@app.route('/emp_detail')
def emp_detail():
    e_id = request.args.get('e_id')
    de = Daoemp()
    vo = de.select(e_id)
    return render_template("emp_detail.html", vo=vo)

@app.route('/emp_mod')
def emp_mod():
    e_id = request.args.get('e_id')
    de = Daoemp()
    vo = de.select(e_id)
    return render_template("emp_mod.html", vo=vo)

@app.route('/emp_mod_act', methods=['POST']) # post 선언하지 않을 시 오류남
def emp_mod_act():
    e_id = request.form['e_id']
    e_name = request.form['e_name']
    gen = request.form['gen']
    addr = request.form['addr']
    
    de = Daoemp()
    cnt = de.update(e_id, e_name, gen, addr)
    return render_template("emp_mod_act.html", cnt=cnt)

@app.route('/emp_add')
def emp_add():
    return render_template("emp_add.html")

@app.route('/emp_add_act', methods=['POST'])
def emp_add_act():
    e_id = request.form['e_id']
    e_name = request.form['e_name']
    gen = request.form['gen']
    addr = request.form['addr']
    
    de = Daoemp()
    cnt = de.insert(e_id, e_name, gen, addr)
    return render_template("emp_add_act.html", cnt=cnt)

@app.route('/emp_del', methods=['POST'])
def emp_del():
    e_id = request.form['e_id']
    print(e_id)
    de = Daoemp()
    cnt = de.delete(e_id)
    return render_template("emp_del.html", cnt=cnt)

if __name__ == '__main__':
     app.run(debug=True, port=80, host='0.0.0.0')

 

결과 화면1

 

 

mybs01.py

import requests
from bs4 import BeautifulSoup
 
res = requests.get('http://127.0.0.1')
html = res.text
print(html)

 

위의 방식대로 볼때 아래와 같은 코드를 확인할 수 있음

 

결과 화면2

 

 

 

DOM 객체 가져오기 : find, find_all

 

 

find와 find_all은 비슷하지만

find는 가장 처음 하나만 찾아오고

find_all은 전부를 찾아온다. (배열 형태로 가져옴)

 

 

mybs01.py

import requests
from bs4 import BeautifulSoup
 
res = requests.get('http://127.0.0.1')

soup = BeautifulSoup(res.text, "lxml")

print(res.text)
print("--------------------------------------------------------")
print(soup)
print("--------------------------------------------------------")
print(soup.find('table'))
# print(soup.find_all('table')[0]) # 같음
print("--------------------------------------------------------")
print(soup.find('table').find('tr'))
# print(soup.find_all('table')[0].find_all('tr')[0]) # 위와 같음
print("--------------------------------------------------------")
print(soup.find_all('table'))

 

res.text와 soup 비교 : 상단이 res.tex, 하단이 soup

 

결과 화면3-1 : BeautifulSoup 사용(soup)

 

결과 화면3-2 : soup.find('table') 사용

 

결과 화면5 : soup.find('table').find('tr')

 

결과 화면3-3 : soup.find_all('table') / 배열 형태로 출력

 

 

 

  • 데이터 값인 이름과 주소만 출력하기

mybs02.py

import requests
from bs4 import BeautifulSoup
 
res = requests.get('http://127.0.0.1')

soup = BeautifulSoup(res.text, "lxml")

print(res.text)
print("--------------------------------------------------------")
trs = soup.find_all('tr')
print(trs)
print("--------------------------------------------------------")

for idx,tr in enumerate(trs):
    if idx == 0 :
        continue
    tds = tr.find_all('td')
    myname = tds[1].text
    addr = tds[3].text
    print("{}\t{}".format(myname,addr))

 

결과 화면4

 

 

 

DOM 객체 가져오기 : select

 

 

find_allselect가 비슷하며

findselect_one와 비슷하다.

 

 

mybs03.py

import requests
from bs4 import BeautifulSoup
 
res = requests.get('http://127.0.0.1')

soup = BeautifulSoup(res.text, "lxml")

# print(res.text)

# print("--------------------------------------------------------")
# print(soup.select_one('tr')) #아래와 같음
# print(soup.find_all('tr'))

print("--------------------------------------------------------")
trs = soup.select('tr')
print(trs)
print("--------------------------------------------------------")

for idx,tr in enumerate(trs):
    if idx == 0 :
        continue
    tds = tr.select('td')
    myname = tds[1].text
    addr = tds[3].text
    print("{}\t{}".format(myname,addr))

 

결과 화면5

 

 

반응형
반응형

 

실행

 

 

  • 간단한 파일 실행

 

pwd, ls

 

pwd

: 경로 확인

 

ls

: 파일 리스트 확인

 

 

python3

 

python3

: 파이썬 실행

Ctrl + C 또는 Ctrl + D로 나가기 가능

 

 

파일 생성 후 실행 + 코드 보기

 

cat > 파일 이름

: 파일 이름으로 된 파일 생성

엔터로 띄워진 후 코드 입력 후 Ctrl+C 누를 시 저장 후 종료됨

 

python3 파일 이름

: 파이썬 파일 실행

ex) hello

 

cat 파일 이름

: 파일 이름으로 만든 파일의 내용(실행 아님)을 보여줌

ex) print("hello")

 

 

 

  • 다른 putty로 실행

1

 

1. 아래의 코드 코드 한 줄씩 실행

 

sudo apt update
sudo apt install python3-pip
sudo pip3 install flask
sudo apt install curl

 

위의 화면이 보일 시 Tab 클릭 > Enter 클릭 하여 진행

 

 

2

 

2. 파일 생성 후 코드 기입

 

3

 

3. python3 app.py 로 실행

 

4

 

4. PuTTY 실행

 

5

 

5. curl 입력 > 버전 확인 > curl http://127.0.0.1:5000 입력 > 입력했던 값 출력 확인

 

 

 

aws 인스턴스 종료

 

 

1

 

1. 인스턴스 상태 클릭 > 인스턴스 종료 클릭

 

2

 

2. 중지 클릭

 

3 : 중지된 화면 확인

 

3. 인스턴트 화면으로 이동

 

4

 

4. 사용하던 인스턴스 클릭 > 인스턴스 상태 클릭 > 인스턴스 종료 클릭

 

 

반응형
반응형

 

인스턴스 키 생성

 

 

1

 

1. aws 페이지 들어감 > 로그인 > EC2 검색 > 인스턴스 시작 버튼 클릭

 

2 : 이름을 mypython으로 변경함!

 

2. 이름에 my_python 입력 > Ubuntu 클릭

 

3

 

3. 유형과 쓸 기능 선택

 

=> 바로 시작할 시 금액 부과되기에 다른 것으로 테스트 한 후 진행을 권유함!

 

 

4

 

4. 새 키 페어 생성 버튼 클릭

 

5

 

5. python 로 이름 입력 > 키 페어 생성 클릭

 

6

 

6. 키 페어 추가된 것 확인 + 다운로드 된 것 확인

 

7

 

7. 인터넷에서 HTTPS 트래픽 허용 클릭 > 인터넷에서 HTTP 트래픽 허용 클릭

 

8

 

8. 인스턴스 시작 클릭

 

9

 

9. 화면 이동된 것 확인 > 모든 인스턴스 보기 클릭

 

10

 

10. 인스턴스 ID 클릭

 

11

 

11. 인스턴스 요약 확인

 

 

 

PuTTY 다운로드 및 설정

 

 

1

 

1. 다운로드 받은 PuTTY 클릭 > Next 클릭

+ 파일

 

2

 

2.  설정 변경 > Install 클릭

 

3

 

3. Finish 클릭

 

4

 

4. PuTTYgen 검색 > 실행

 

5

 

5. File 클릭 > Load private key 클릭

 

6

 

6. 위에서 저장된 python.pem 파일을 선택

 

7

 

7. save private key 클릭 > PYTHON으로 저장

 

8

 

8. 생성된 것 확인

 

9

 

9. Host Name에 인스턴스 키 생성의 11에 있는 퍼블릭 IPv4 주소에 있는 값 입력

 

10

 

10. 클릭해서 세부로 들어가기

 

11

 

11. Browse 클릭 > PYTHON 저장한 것 클릭 > Open 클릭

 

 

반응형
1 2 3 4 5 ··· 13