2019. 10. 4. 18:24

 

안녕하세요. 게임개발자 놀이터 입니다.

 

이전 포스팅에 이어 웹크롤링에 대해서 포스팅 하고자 합니다

 

웹에서 정보 가져오기 - 1

 

저번에 requests 설정까지 마무리 했습니다.

 

그럼 이제 requests가 정상 작동하는지 확인해봅시다.

 

 

이와 같이 소스를 입력 한 후 빌드 ( 컨트롤 + 쉬프트 + B ) 를 해봅시다.

 

 

status_code 값과 OK 값이 200, true가 나온다면 성공입니다.

 

하지만 html 텍스트는 현재 읽을 수 없습니다.

 

html을 읽기 위해선 다음과 같은 세팅이 필요합니다.

 

BeautifulSoup

 

html의 내용을 파이썬에서 사용할 수 있도록 파싱 해주는 패키지 입니다.

 

명령 프롬프트 창을 이용해 bs4를 설치 해줍니다.

 

 

 

이제 html을 파싱할 수 있습니다.

 

 

위처럼 소스를 입력하고 빌드하시면 HTML 소스가 로그창에 출력 된걸 확인 하실 수 있습니다.

 

데이터 검색 

 

테스트에 사용 할 HTML  URL입니다. :  https://www.google.com/search?q=+site:tistory.com+%EC%8B%9C%EB%A6%AC%EC%8B%9C%EC%95%88&sa=X&ved=2ahUKEwjuofzmjoLlAhWUE4gKHS-wAYEQrAN6BAgGEBQ&biw=2048&bih=1042

구글 페이지에서 [site:tistory.com 시리시안] 을 검색한 URL입니다.

 

 

 

이곳에서 저는 검색 제목만 모아서 크롤링 해보려 합니다.

 

크롬에서는 검사 기능을 통해 바로 HTML을 볼 수 있습니다.

 

찾고자 하는 글에 우클릭 후 검사를 눌러 줍니다.

검사를 누르면 우측에 HTML 창이 뜨게 됩니다.

 

 

내용을 보니 저 검색결과는 div 태그에 class 'ellip'를 가지고 있군요. 이 정보를 이용해 파싱해 찾아 봅시다.

 

 

전체 소스입니다. 중간에 잘린 url은 위에 적용된 HTML입니다.

 

빌드 해보니 아무런 결과가 나오지 않았습니다. 아무래도 클래스 명칭 'ellip' 로 찾는게 문제 인거 같네요.

 

정확한 HTML 비교를 위해 prettify() 로 HTML을 출력 해봤습니다.

 

클래스 명칭이 다르네요, 아무래도 검색할때 생성되는 구조이거나 랜덤으로 만들어지는거 같습니다. 따라서 클래스 비교 방식은 사용 할 수 없겠군요.

 

이번엔 글 제목을 클릭해서 들어 갈 수 있으니, a 태그로 찾은 후 div로 분류해봤습니다.

 

 

출력되는 list2를 확인해보니 아래와 같았습니다.

 

 

첫번째 검색결과와 제가 필요했던 애들의 클래스 명칭이 전부 똑같네요. 이건 이용할 수 있을꺼같습니다.

 

 

첫번째 클래스 명칭을 이용해 찾도록 수정했습니다.

 

 

제가 얻고자 했던 목록들만 얻을 수 있게 되었습니다.

 

이처럼 크롬의 HTML을 분석하여 원하는 정보를 찾을 수 있습니다. 구글의 경우 위와 같았지만, 다른 사이트의 경우엔 분석이 우선시 되니, HTML 을 읽는 기술이 필요할꺼 같습니다.

 

감사합니다.

 

 

Posted by 시리시안
2019. 10. 4. 16:45

 

안녕하세요. 게임개발자 놀이터 입니다.

 

웹크롤링에 대해서 포스팅 하고자 합니다

 

웹 크롤러

 

우리가 어떤 정보를 웹 브라우저로만 보는 것이 아니라, 그 정보 들을 내가 이용하기 편한 방식(XML, JSON) 등으로 DB에 쌓아두고 싶을 때가 있습니다.

웹 데이터를 원하는 방식으로 가공하여 저장하는 기능을 웹크롤링 한다고 합니다.

 

웹에서 정보 가져오기 - 1

 

php 의 requests 라는 라이브러리를 이용해서 웹의 정보를 가져옵니다.

 

설치하기 위해선 pip를 이용합니다.

 

[Window+R]  + cmd 를 이용해 명령 프롬프트를 엽니다.

 

사용자 PC에 php가 설치되어 있는 폴더로 이동합니다.

 

폴더 안에 Scripts 폴더까지 이동합니다.

 

저의 경우는 C:\Python27\Scripts 입니다.

 

그후, pip install requests를 입력합니다. 아래 화면 처럼 뜬다면 성공입니다.

(pip 업그레이드 문구는 무시해주세요 )

 

 

제대로 설치 되었는지 확인을 위해 ATOM 에디터로 넘어와 임포트 해봅니다.

 

ATOM Python 모듈 설정

 

ATOM에서 pip로 설치한 모듈을 사용하려면 추가로 설정해줘야 합니다.

 

우리는 '파이썬 프로그래밍 -01 ATOM 설치 (Python)' 에서 ATOM 플러그인으로 'script'를 설치 했습니다.

 

모듈을 내장하여 빌드 하기 위해선 'script'플러그인은 조금 수정 해줘야 합니다.

 

우선 [컨트롤 + ,]을 눌러 settings 창을 엽니다.

그후, 좌측 Packages 메뉴를 누른후 Installed Packages 에서 'script'를 검색한 후 Settings를 눌러 줍니다.

 

그러면 'script'의 설정 창이 열리게 되는데, [View Code]를 눌러 줍니다.

 

ViewCode를 누르면 아톰창이 새로 열리게 됩니다.

 

그후 왼쪽 프로젝트 목록에서

 

[ script / lib / grammars / python.coffee ]를 열어 줍니다.

 

 

 

python 으로 되어있는 경로를 각각 파이썬 경로로 수정해줍니다.

 

저의 경우는 [ C:/Python27/python ] 입니다.

 

 

이후 창을 닫은 후, 메인 소스에 requests를 임포트 하는 코드를 작성 한 후 빌드 해보면

 

 

 

아무런 에러 없이 완료 된다면 성공입니다.

 

감사합니다.

 

이후 내용은 다음 포스팅에서 진행 하겠습니다.

 

 

 

 

 

 

 

 

 

 

 

Posted by 시리시안
2019. 10. 4. 15:45

 

안녕하세요. 게임개발자 놀이터 입니다.

 

ATOM으로 python 프로그래밍 중 에러가 발생하여 해결법을 포스팅 하려합니다.

 

먼저 에러 로그는 다음과 같습니다.

 

UnicodeEncodeError: 'cp949' codec can't encode character '\xa0' in position 63430: illegal multibyte sequence

 

유니코드 관련 에러로 확인됩니다.

 

ATOM의 우하단을 확인해봅시다.

 

 

해당 인코딩 방식이 UTF-8 인지 확인합니다.

 

만약 UTF-8이 아니라면, UTF-8로 변경 후 다시 시도해봅니다.

 

이미 UTF-8 이거나, 에러가 계속 된다면

 

 

해당 소스를 최상단에 추가 해주면 됩니다.

 

감사합니다

 

 

Posted by 시리시안
2019. 10. 4. 12:08

안녕하세요. 게임개발자 놀이터 입니다.

 

이번에 웹 크롤링을 해야 하는 이슈가 생겼는데, 기존 언어보다 Python이 강력하다는 이야기를 듣고, 파이썬으로 진행 하며 정리 해보려합니다.

 

먼저 파이썬 프로그램을 만들고 편집 할 수 있는 'ATOM Text Editor' 설치입니다.

 

아톰은 텍스트 에디터 기능 뿐만이 아닌 패키지 설치로 파이썬, C, Nodejs 등 여러 언어를 지원하여 상당히 편리합니다.

 

이제, 아톰을 설치해 보도록 하겠습니다.

 

먼저 아톰 공식 웹사이트에 들어갑니다.

 

 

윈도우 1.40.1 버전 다운로드를 클릭합니다.

 

클릭시 자동으로 다운로드가 시작됩니다. 적은 용량으로 바로 다운로드가 완료됩니다.

 

 

클릭시 아톰 특유의

 

 

우주선의 짐을 싦는 모습이 나옵니다. 조금만 기다리시면 자동으로 실행됩니다.

 

아톰이 설치 완료되면 화면 중앙에 아래와 같은 메뉴가 보입니다.

 

먼저 패키지 설치를 위해 아래 버튼을 클릭해줍니다.

 

 

그 후 파이썬 설치를 위해 autocomlite-python을 검색해 설치 해줍니다.

 

 

아래와 같이 자동생성 기능이 포함되어 있어 상당히 편리 합니다.

 

 

다시 인스톨 화면으로 돌아와서 이번엔 빌드를 위한 script를 검색해서 설치해줍니다.

 

여러 소스를 빌드할 수 있도록 해주는 패키지입니다.

 

 

 

설치가 완료된 후, 우측 프로젝트를 우클릭하여 New File 하여 파일을 하나 생성해줍니다.

 

 

확장자 (.py)을 입력하지 않으면, 파이썬 파일로 인식하지 않습니다. 꼭 입력해주세요.

 

 

해당 파일에 아래처럼 print문을 입력한 후

 

상단 메뉴에서 Packages - Script - Run Script ( 단축키 Ctrl + Shift + B ) 를 누르시면 소스가 실행됩니다.

 

하단 로그에 아래와 같이 글이 뜬다면 성공입니다.

 

 

이로써 파이썬 환경 개발을 위한 기초 세팅이 끝났습니다.

 

제가 잘 아는 부분이 아니라, 개발하면서 나온 화면을 촬영후 글을 작성했습니다. 댓글 달아주시면 최대한 응답해드리겠습니다.

 

감사합니다.

 

 

Posted by 시리시안