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

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

파이썬을 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

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

AddHandler cgi-script .py

 

</Files>

</Directory

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

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

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

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

1
2
#!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 in range(0len(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

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



출처: http://syriusta.tistory.com/14 [One Step Ahead]

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
62 PS4 프로 자동 구입 매크로 만들기 -2- file 졸리운_곰 2020.11.21 512
61 PS4 프로 자동 구입 매크로 만들기 -1- file 졸리운_곰 2020.11.21 517
60 Zappa를 이용해 AWS Lambda에 Flask 올리기 file 졸리운_곰 2020.10.25 455
59 Python WAS 구축하기 ( Django, Nginx, Gunicorn ) file 졸리운_곰 2020.10.25 430
58 Python SimpleHTTPServer file 졸리운_곰 2020.10.25 421
57 [Django] 설문조사 애플리케이션 예제 (3) - 구현하기 file 졸리운_곰 2020.09.07 591
56 [Django] 설문조사 애플리케이션 예제 (2) - Model 다루기 file 졸리운_곰 2020.09.07 503
55 ????[Django] 설문조사 애플리케이션 예제 (1) - Django 프로젝트 구조 알아보기???? file 졸리운_곰 2020.09.07 409
54 [Python 데이터 수집] 웹 페이지 컨텐츠 수집 file 졸리운_곰 2020.08.08 468
53 파이썬 네이버 실시간 검색어 스크래핑(크롤링) file 졸리운_곰 2020.05.09 469
52 파이썬 크롤링 스크래핑 간단 설명(예제) file 졸리운_곰 2020.05.09 577
51 Web Screen Scraping with Python to Populate SQL Server Tables file 졸리운_곰 2020.02.27 469
50 [네이버 뉴스 스크래핑/크롤링] NNST - 한국어 네이버 뉴스 데이터셋 file 졸리운_곰 2020.01.21 434
49 네이버 뉴스 크롤러 github naver_news_crawling_perfect.py 졸리운_곰 2020.01.19 633
48 Getting Started with Web Automation Testing using Selenium and Python 졸리운_곰 2019.12.25 365
47 Apache와 Python을 CGI로 연동하기 file 졸리운_곰 2019.10.24 384
46 파이썬 구현의 blog API : MetaWeblog API (MWA) implemented in Python file 졸리운_곰 2019.02.08 438
» 아파치서버와 파이썬 연동 - 웹에서 파이썬실행 졸리운_곰 2019.01.03 1258
44 Python Django 프로젝트를 위한 Jenkins 설정 : Assembling a Continuous Integration Service for a Django project on Jenkins file 졸리운_곰 2018.11.03 1348
43 Django + djangorestframework + django_rest_swagger 시작 file 졸리운_곰 2018.05.27 430
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED