One Step Ahead

아파치서버와 파이썬 연동 - 웹에서 파이썬실행 본문

공부중인것&잘까먹는것/PYTHON

아파치서버와 파이썬 연동 - 웹에서 파이썬실행

소피st 2018. 7. 30. 23:32

내가 최근에 궁금했던걸 알게 되었다.

파이썬을 PHP처럼 웹브라우저에서 실행하는것.

나는 공부용으로 윈도우 XP 넷북에 개인용 아파치 서버를 돌리고 있다.

파이썬과 아파치를 연동하려면

1. 아파치는 깔려있으니 파이썬을 깐다. 파이썬 공식홈에가서 3.4버전을 깔아야 한다.

그 이후 버전은 에러가 나면서 깔리지 않았다.

2. 파이썬을 깔고 CMD 창에서 필요한 모듈을 설치한다.

파이썬설치폴더로 이동해서 아래 명령어를 실행한다. 

PATH가 설정 되어 있으면 아무 폴더에서나 가능할지도 모른다. 해보지 않음.

python -m pip install requests 

python -m pip install beautifulsoup4

3. 아파치 CGI이용을 위한 설정을 한다. 나는 오토셋으로 아파치가 깔려있어서

다른걸로 아파치를 설치한 사람과 경로가 다를수 있다.

여튼 아파치 설치 폴더중 conf\httpd.conf 파일을 찾아야한다.

위파일을 열고 <Directory "D:/AutoSet6/public_html"> 이부분을 찾는다.

빨간색 부분은 아파치 설치 경로이며 최상위 폴더를 나타내는 부분이다.

설치 환경에 따라 저부분은 다르다. 

<Directory "최상위폴더경로"> 이부분을 찾는거다.

블라블라블라...........

<Files "*.py">

Options ExecCGI

AddHandler cgi-script .py

</Files>

</Directory

그리고 위 파란부분을 그사이에 붙여 넣는다.

    Options ExecCGI
  • 아파치가 요청을 CGI를 이용해 처리할 수 있도록 설정한다
  • AddHandler cgi-script .py
    • 웹페이지 요청 중 .py 확장자를 가지는 요청은 CGI를 이용해 처리한다

4.  이제 아파치를 재시작하고 파이썬 코드를 작성한다.

5. 파이썬코드 첫문장은 아래와 같이한다.

#!C:\Python34\python.exe
#-*- coding: utf-8 -*-

#! 뒤에 파이썬 설치경로가 들어간다.

#-*- coding: utf-8 -*-

이부분은 utf-8로 문자를 처리하는 부분... 한글사용 하려면 해야된다.

6. 이제 아래와 같이 샘플 코드를 넣고 py를 저장하여 웹브라우저에서 소환을 해보자...

#!C:\Python34\python.exe
#-*- coding: utf-8 -*-
 
import cgi
# cgitb는 CGI 프로그래밍시 디버깅을 위한 모듈로, cgitb.enable() 할 경우 런타임 에러를 웹브라우저로 전송한다
# cgitb.enable() 하지 않은 상태로 실행 중 오류가 발생한 경우 웹서버는 클라이언트에게 HTTP 응답코드 500을 전송한다
import cgitb
cgitb.enable()
 
# HTTP 규격에서, 헤더 전송 이후에는 반드시 줄바꿈을 하게 되어있으므로 마지막에 \r\n을 전송한다
# 마지막에 \r\n을 전송하지 않으면 브라우저 측에서 오류가 발생한다
print("Content-type: text/html;charset=utf-8\r\n")
 
print("<html>")
print("<head>")
print("\t<title>Python CGI Test</title>")
print("</head>")
print()
print("<body>")
print("\t<h1>Hello, Python CGI!</h1>")
print("</body>")
print("</html>")


7. 한글 사용도 가능하게 하는 코드는 아래와 같다. 얼마전 네이버에서 주가정보를 크롤링 해오는 코드와 접목시켰다.

#!C:\Python34\python.exe
#-*- coding: utf-8 -*-
import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
######### 2~5번행 까지는 브라우저에서 한글을 표기하기 위한 코드########## 
import cgi
import cgitb
cgitb.enable()
# cgitb는 CGI 프로그래밍시 디버깅을 위한 모듈로, cgitb.enable()
# 할 경우 런타임 에러를 웹브라우저로 전송한다
# cgitb.enable() 하지 않은 상태로 실행 중 오류가 발생한 경우 
# 웹서버는 클라이언트에게 HTTP 응답코드 500을 전송한다
print("Content-type: text/html;charset=utf-8\r\n")
# HTTP 규격에서, 헤더 전송 이후에는 반드시 줄바꿈을 하게 되어있으므로 마지막에 \r\n을 전송한다
# 마지막에 \r\n을 전송하지 않으면 브라우저 측에서 오류가 발생한다

#############아래부터 파이썬 코드################
import requests
from bs4 import BeautifulSoup
code = "056360" #종목코드번호
url = "https://finance.naver.com/item/sise_day.nhn?code="+code #크롤링할주소
req = requests.get(url)
html = req.text
soup = BeautifulSoup(html, 'html.parser')
t1 = soup.find("table", {"class":"type2"})
day = t1.find_all("span",{"class":"tah p10 gray03"}) #날짜
jong = t1.find_all("span",{"class":"tah p11"}) #종가
#print(len(jong))
ind = 1
for j in range(0, len(day)):
	day1 = day[j].text
	jongga = jong[j*5].text
	result = "날짜 : "+day1+"===>종가 : "+jongga+"<br>"
	print(result)

웹브라우저에서 http://192.168.0.11/test.py  이렇게 파이썬 파일을 소환하면 

결과는 이렇게 나올것이다.

날짜 : 2018.07.30===>종가 : 7,480
날짜 : 2018.07.27===>종가 : 7,400
날짜 : 2018.07.26===>종가 : 7,200
날짜 : 2018.07.25===>종가 : 7,020
날짜 : 2018.07.24===>종가 : 7,090
날짜 : 2018.07.23===>종가 : 6,920
날짜 : 2018.07.20===>종가 : 7,360
날짜 : 2018.07.19===>종가 : 7,330
날짜 : 2018.07.18===>종가 : 7,370
날짜 : 2018.07.17===>종가 : 7,360

이제 잊어버리지 말자.^^

'공부중인것&잘까먹는것 > PYTHON' 카테고리의 다른 글

파이썬크롤링 연습 beautifulsoup_1  (0) 2018.07.22
Comments