지난 시간에 코로나 일일 확진수를 Beautiful Soup 라이브러리를 활용해서 웹 스크레이핑(scraping)하는 법에 대해서 살펴봤습니다.
오늘은 Flask를 활용해서 웹 스크레이핑 한 결과를 제공하는 웹 서버를 만들어보겠습니다. 참고로 지금 사용하고 있는 제 노트북을 서버 컴퓨터로 삼을 것입니다.
우선 flask 모듈을 설치해줘야 합니다. 명령프롬프트 또는 터미널에 pip install flask로 설치해주세요. 그리고 아래와 같은 파이썬 스크립트를 하나 준비합니다. 이름은 test.py와 같이 알아서 정해주세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
from flask import Flask
from urllib import request
from bs4 import BeautifulSoup
app = Flask(__name__)
@app.route("/")
def hello():
target = request.urlopen("http://ncov.mohw.go.kr/")
soup = BeautifulSoup(target, "html.parser")
nums = []
for item in soup.select("div.datalist"):
for data in item.select("span.data"):
nums.append(int(data.string))
print("오늘 코로나 확진자수: ", sum(nums), "명")
return "<h1>오늘 코로나 확진자수: "+str(sum(nums))+"명</h1>"
app.run(host="0.0.0.0", port="5000", debug=True)
|
cs |
그 다음에는 명령프롬프트 또는 터미널에 다음과 같이 명령해주면 웹 서버가 작동합니다.
set FLASK_APP=test.py
flask run --host=0.0.0.0 --port=5000
리눅스의 경우에는 다음과 같이 명령해줍니다.
export FLASK_APP=test.py
flask run --host=0.0.0.0 --port=5000
5000포트를 열어주었는데, 외부에서 이 서버에 접속하게 하려면 포트포워딩을 해줘야 합니다. 포트포워딩을 해줘야 저희 집의 공유기까지 온 요청이 서버인 제 노트북까지 도달합니다. 만약 포트포워딩을 했는데도 안되면, 인바운드 규칙 설정도 해줘야 합니다.
와이파이가 아닌 모바일데이터에 연결되어 있는 제 스마트폰으로 이 서버에 접속해보도록 하겠습니다. 웹 브라우저에 [내IP주소]:5000을 입력하면 접속됩니다. 만약 내IP주소가 123.456.789.123이라면 123.456.789.123:5000을 입력합니다.
서버가 잘 작동해서 오늘 코로나 확진자수에 대한 내용을 잘 제공하고 있는 것을 확인할 수 있습니다.
관련 글
'Dev > python' 카테고리의 다른 글
[python] 튜플의 값을 바꿔주려면? 리스트로 변환한 후 다시 튜플로 (0) | 2020.12.14 |
---|---|
[flask+jinja2] 중복되는 html 처리, {% include %} 사용 (6) | 2020.12.09 |
[python] 리스트들의 교집합 찾기(set 활용) (0) | 2020.12.07 |
[python] 파이참 venv 가상환경 만들고 간단한 예제 코드 실행하기 (window 10) (9) | 2020.10.09 |
[python] 소수(prime number) 구하기, primePy 모듈 활용 (8) | 2020.10.07 |
[python] playsound 모듈로 음악 재생하기 (2) | 2020.10.06 |
[python] 오늘의 코로나 확진자수 스크레이핑하기 (Beautiful Soup 활용) (0) | 2020.10.05 |
[python] os.name의 리턴 nt, posix의 의미 (0) | 2020.10.05 |