직접 서버를 쓰지 않고 호스팅을 사용하게 되면 간혹 답답한 경우가 많다.
보안때문인지 서버 부하때문인지 알수없지만 꼭 썻으면 하는 기능을 막아 놓는다.
CRON 도 그렇고 , php에서는 file 이나 fsocket으로 다른 사이트의 내용을 가져 오는것도 안되는 경우가 많다.
이번에 http://bemlotto.com 이라는 허접한 개인 사이트를 만들었는데 , 로또 당첨번호를 자동으로 긁어 오고 싶었다. 하지만 내가 쓰는 호스팅에서는 file함수와 fopen함수가 안되는거다.
http://lot.kbstar.com/quics?page=A005345
그래서 위 사이트를 긁어 올수가 없었다.
그런데 웃긴건.. PYTHON(파이썬)을 쓰면 된다는거다.
그래서 긁어오는 부분만 파이썬을 이용하기로 했다. 파이썬에서 긁어오고 mysql에 집어 넣는거까지 하고 싶었지만 당췌 파이썬에서 mysql을 하는게 너무 어려워서 포기하고 파이썬은 그냥 긁어오고 그걸 php에서 받아서 디비에 넣는 어설픈 과정을 거치기로 했다.
먼저 아래는 파이썬 소스다.
#!/home/bin/python너무 허접해서 보이기 싫은 내 몸처럼 소스가 무척 부끄럽다. 파이썬에 익숙치 않아서 코끼리 뒷다리 만지듯 google에 찾아보면서 만들었다.
import urllib,re,string,time,sys
url='http://lot.kbstar.com/quics?page=A005345'
tmp=''
text = urllib.urlopen(url).read()
p=re.compile(r"(<option value='\d{3}\' selected)")
m=p.findall(text)
kai=string.replace(m[0],"<option value='","")
kai=string.replace(kai,"' selected","")
p=re.compile(r'(class=\'lot_number\'[ a-z=\']*>\d{1,2}\</td>)')
m=p.findall(text)
lottoNum=[]
for x in range(len(m)):
tmpText=string.replace(m[x],'class=\'lot_number\'','')
tmpText=string.replace(tmpText,'</td>','')
tmpText=string.replace(tmpText,' align=\'center\'>','')
tmpText=string.replace(tmpText,'>','')
lottoNum.insert(x,tmpText)
print kai+","+lottoNum[0]+","+lottoNum[1]+","+lottoNum[2]+","+lottoNum[3]+","+lottoNum[4]+","+lottoNum[5]+","+lottoNum[6]
여튼 정규식은 php보다 파이썬이 훨씬 쉽다는 기분이다.
위의 파일을 getLotto.py 라고 저장하고 실행 시켜 보면
235,21,22,26,27,31,37,08이렇게 나온다.
이 텍스트를 php에서 받아서 사용하면된다.
php에서 받는 방법은 여러가지가 있겠지만 아래와 같이 exec 함수를 사용했다.
$tmp=exec("python getLotto.py");이 이후는 그냥 $tmp 변수를 explode 해서 디비에 넣던지 화면에 뿌려주던지 알아서 하면 된다.
echo $tmp;
그런후 또 하나 중요한건 막아놓은 cron 기능을 대신해서 feedburner을 이용하는거다.
그것에 대해서는 아래글 참조~
feedburner 를 cron 대용으로 쓰기
설마 .. 이글보고 파이썬도 사이트 긁어오는거 막는건 아니겠지?
원하시는 사이트에서 원하는 내용만 긁어 드립니다.
파격적인 가격 !! 페이지당 5만원
원하시는 사이트에서 원하는 내용만 주기적으로 긁어서 db에 넣어드리거나 rss로 만들어 드립니다. FTP만 열어 주시면 됩니다.
작업기간은 사이트 난이도에 따라서 다르겠지만 하루는 안걸립니다.
원하시는 분은 [##_1L|1141509530.png|width="157" height="21" alt="사용자 삽입 이미지"|_##]
으로 메일 주세요~ ^^ 좀 도와주십쇼


댓글 없음:
댓글 쓰기