지난 시간에 코로나 일일 확진수를 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을 입력합니다.
서버가 잘 작동해서 오늘 코로나 확진자수에 대한 내용을 잘 제공하고 있는 것을 확인할 수 있습니다.
bskyvision의 추천글
☞ [python] 오늘의 코로나 확진자수 스크레이핑하기 (Beautiful Soup 활용)
☞ 쉽게 따라하는 ipTIME 공유기 포트포워드 설정하기
'코딩 > flask' 카테고리의 다른 글
[flask+jinja2] flask 탬플릿에서 행의 갯수를 세려면 (0) | 2020.12.18 |
---|---|
[flask+jinja2] 중복되는 html 처리, {% include %} 사용 (6) | 2020.12.09 |
[flask] flask로 웹 어플리케이션 만들기 (코로나19 오늘 확진자 수 알림) (0) | 2020.10.08 |