본문 바로가기

언어/python&웹 크롤링

[python&웹 크롤링] 6. urllib을 활용한 필요 데이터 추출하기(1)

먼저, 들어가기에 앞서 웹에대한 기본적인 지식이 있어야한다.

대표적으로 DOM 구조 분석과 HTML 코드를 대략적으로 볼 수 있어야하며, 선택자에 대한 개념이 있어야한다.

네이버 화면 개발자도구를 통한 선택자(selector) 복사

위의 화면은 크롬에서 네이버를 실행하여 f12(개발자도구)를 누르고 elements 에서 네이버 헤더에 포함되어 있는 일부를 Copy selector를 통해 복사한 것이다.

복사 결과는 아래와 같다.

#NM_FAVORITE > div.group_nav > ul.list_nav.type_fix

NM_FAVORITE 라는 아이디 내부에 group_nav 클래스가 붙은 div 안에 list_nav, type_fix 라는 클래스가 붙은 ul태그를 나타낸다.

 

선택자가 중요한 이유는 추후 어떠한 html파일을 다운받은 후 선택자를 통해 원하는(탐색하고싶은) 부분을 찾아서 그 부분만 파싱하여 가져오거나 할 수 있기 때문이다.

 

그럼, 이제부터 파이썬의 urllib 라이브러리를 통해 데이터 추출을 해보자.

 

데이터 추출 목적은 기본적으로

html 다운로드 -> 필요한 텍스트나 정보를 파싱 -> DB저장 및 서버 전송 등 으로 이뤄진다.

 

아래의 순서를 설명하며 진행하겠다.

1. urlretrieve 메서드

2. urlopen 메서드

3. urlretrieve 메서드와 urlopen 메서드 비교

 

아나콘다 프롬프트를 실행시켜보자.

이전 장에서 section2라는 가상환경을 만들었었는데, 이를 활성화시켜보자

activate section2 명령어 실행

그 후 atom 명령어를 실행하여 아톰을 실행시키자.

다시 말하지만, section2라는 가상환경에서 atom을 실행시킴으로써 이에 필요한 패키지등을 아톰에서 사용할 수 있다.

 

아래의 주소는 파이썬 라이브러리를 확인할 수 있는 링크이니 궁금하면 확인해보자.

앞으로 나올 라이브러리를 검색하여 함수 등 확인해보는것이 좋다.

docs.python.org/3/library/index.html

 

1. urlretrieve

이전장에서 생성했던 section2 프로젝트로 가서 download2-2-2.py라는 파일을 생성해보자

download2-2-2.py 코드

코드는 본인이 직접 입력해보자. #을 이용해 주석으로 코드에 대한 설명을 썼다.

imgUrl 변수부분이 짤렸지만 본인이 구글에서 사진검색 후 해당 사진 링크를 복사해서 붙여넣으면 된다.

전체적으로 이미지 url을 변수에 담고, 파일저장 할 경로를 변수에 담아서 urllib.request.urlretrieve(url, path) 변수에 넣어서 해당 파일을 다운로드 받는것이다. 해당 코드를 실행 후 경로로 들어가 잘 다운로드 되었는지 확인해보자.

 

2. urlopen

section2 프로젝트에 download2-2-1.py라는 파일을 다시 생성해보자

download2-2-1.py 코드

실행시키기 전에는 urlretrieve 실행으로 다운받았던 파일을 지운 후에 실행시켜보자(파일 명이 같기때문..)

주석으로 모두 설명했지만 여기서 특이점은 f와 f2 변수를 사용하여 파일을 바로 저장하지 않고 한번 읽어서 변수에 저장시킨다.

 

3. urlretrieve 메서드와 urlopen 메서드 비교

두 메서드의 차이점은 구글검색으로도 쉽게 알 수 있다.

urlretrieve : 실제 읽어서 변수에 저장하지 않기 때문에 폴더에 다이렉트로 저장하는 경우 많이쓴다

(많은 데이터를 로컬에 가져올 경우 용이)

 

urlopen : 로컬에 저장하기 전에 변수에 해당 파일을 읽어온다.

원본 그대로가 아닌, 파싱하거나 데이터를 변경 후 저장할때 용이하다.


Today :
Yesterday :
Total :