웹게임 크롤러 만들기

[python] 크롤러 예제

2018. 10. 28. 00:01

복붙용.



출처: https://dojang.io/mod/page/view.php?id=1157


import requests                  # 웹 페이지의 HTML을 가져오는 모듈

from bs4 import BeautifulSoup    # HTML을 파싱하는 모듈

 

# 웹 페이지를 가져온 뒤 BeautifulSoup 객체로 만듦

response = requests.get('https://pythondojang.bitbucket.io/weather/observation/currentweather.html')

soup = BeautifulSoup(response.content, 'html.parser')

 

table = soup.find('table', { 'class': 'table_develop3' })    # <table class="table_develop3">을 찾음

data = []                            # 데이터를 저장할 리스트 생성

for tr in table.find_all('tr'):      # 모든 <tr> 태그를 찾아서 반복(각 지점의 데이터를 가져옴)

    tds = list(tr.find_all('td'))    # 모든 <td> 태그를 찾아서 리스트로 만듦

                                     # (각 날씨 값을 리스트로 만듦)

    for td in tds:                   # <td> 태그 리스트 반복(각 날씨 값을 가져옴)

        if td.find('a'):             # <td> 안에 <a> 태그가 있으면(지점인지 확인)

            point = td.find('a').text    # <a> 태그 안에서 지점을 가져옴

            temperature = tds[5].text    # <td> 태그 리스트의 여섯 번째(인덱스 5)에서 기온을 가져옴

            humidity = tds[9].text       # <td> 태그 리스트의 열 번째(인덱스 9)에서 습도를 가져옴

            data.append([point, temperature, humidity])    # data 리스트에 지점, 기온, 습도를 추가

 

data    # data 표시. 주피터 노트북에서는 print를 사용하지 않아도 변수의 값이 표시됨

구글 컴퓨트 엔진 (Compute Engine)을 대여하여 간단한 서버를 하나 구축하기로 했다. 아마존 (AWS), 구글, 마소 (Azure) 세가지 대표적인 서비스 중에서 구글을 선택한 건 1년간 유효한 300달러치 무료 크레딧을 주기 때문.. 1년간 가장 작은 규모의 서버 (vCPU 1개 + 10기가 + 리눅스)를 미국 지역에 개설할 수 있다. 당분간 트래픽 적고 서버 구축엔 웹페이지 제작 작업만 할 것이기 때문에 충분할 것으로 생각한다.


운영체제는 리눅스 16.04 LTS 버전으로 정했다... 별 이유 없다. 그냥 node.js 패키지 설치를 지원하기 때문이다. (나도 잘 모른다....)



이어서 우분투에서 GUI 환경을 이용하기 위해 VNC란걸 설치한다.

1
2
$ sudo apt-get install gnome-settings-daemon gnome-terminal metacity nautilus gnome-panel vnc4server
 
cs



느려서 좀 걸린다... 중간에 하나 설치의향을 묻는게 있는데, 그냥 Y 입력하면 된다.


설치가 끝나면 실행을 위해 아래와 같이 입력.


1
$ vnc4server
cs



해당 서버에 접속하기 위해 VNC viewer를 설치한다. 본인 환경에 적합한 것을 고르면 된다. (https://www.realvnc.com/en/connect/download/viewer/)



아, 접속 전에 우선 구글에서 고정아이피 설정을 해줘야 한다. 안그러면 나중에 바뀔 수 있단다.


1. VPC 네트워크 --> 외부IP 주소 탭으로 들어가서


2. 고정아이피로 설정을 하면 된다. 빨간박스 부분이 서버의 아이피다. (내 아이피는 가렸다.)



추가로 방화벽 규칙으로 들어가서 VNC를 위한 포트가 열려있는지도 확인해본다.

새 규칙 만들기로 들어가서 아래 그림처럼 설정해준다. 특정 컴퓨터(단일아이피)만 사용해서 접속한다면 소스 IP 범위를 제한하면 조금 더 안전할 것 같다.


이후 VNC Viewer를 열어서 new connection에 아이피:1 을 입력하고 접속하면 된다. :1은 처음으로 설정 된 VNC 계정을 의미하며 이후로 1,2,3,4 이렇게 늘릴 수 있다. (위의 포트 또한 5900+번호, 6900+번호 순으로 열어주면 된다.)




근데 VNC viewer로 처음 접속하면 아래 그림처럼 회색화면만이 똻 하고 나를 반겨준다.... 환경설정을 해주자. 



VNC 설정을 해본적이 없으니 다른 블로그를 보고 베꼈다.  다음 파일을 수정하자. ~/.vnc/xstartup


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
vnc4server -kill :1  //구동중인 VNC 종료.
vi ~/.vnc/xstartup
 
기존 내용 삭제 후 아래 내용을 입력.
 
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
 
-/etc/vnc/xstartup ] && exec /etc/vnc/xstartup
-r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
 
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
 
 
저장 후 vnc 재실행
 
vnc4server
cs



VNC 재접속을 하면 아래와 같이 그나마 친숙한 화면이 나온다.




... 힘들다 나머진 다음에 하자.

'웹게임 크롤러 만들기' 카테고리의 다른 글

[python] 크롤러 예제  (0) 2018.10.28
eRepublik 크롤링 페이지 만들기  (0) 2018.09.01

node.js 공부할 겸, 심심풀이 할 겸 웹게임 크롤링 페이지를 하나 만들려고 한다.


이고브, http://egov4you.org/

이립박스, http://erepbox.russianwill.ru/ 


같은 크롤링 사이트 하나 만드는 것이 목표.

+ Recent posts