본문 바로가기
Python/Python크롤링

Wget을 이용해서 크롤링 시작하기(체험하기)

by hyun-am 2020. 10. 27.

Wget이란

 

웹 서버로부터 콘텐츠를 가져오는 컴퓨터 프로그램으로, GNU 프로젝트의 일부입니다. 이 프로그램의 이름은 월드 와이드 웹과 get에서 합쳐진 Wget입니다. Wget은 HTTP, HTTPS, FTP 프로토콜을 통해 내려받기를 지원합니다.

 

또한 Wget은 단순하게 파일을 내려받는 용도 외에도 웹 페이지를 재귀적으로 순회하며 내려받거나, HTML 링크를 상대 경로에서 절대 경로로 변환하는 기능도 제공합니다. 이렇게 Wget은 크롤링으로 다양한 기능을 사용할 수 있습니다.

 

Wget설치하기

 

MacOS에서 설치하기

먼저 MacOS는 터미널에 들어가서 Homebrew를 통해 간단하게 설치를 할 수 있습니다.

brew install wget

또는 다음과 같은 사이트에 들어가서 다운로드를 받을 수 있습니다. ftp.gnu.org/gnu/wget/

 

Index of /gnu/wget

 

ftp.gnu.org

리눅스환경에서 설치하기

리눅스에서 설치하는 명령어는 두가지가 있습니다.

yum install wget

apt-get install wget

 

Windows환경에서 설치하기

윈도우즈 환경에서 wget을 설치하는 방법은 아래 링크에서 참고하시면 되겠습니다.

 

www.osradar.com/how-to-install-wget-in-windows-10/

 

How to install Wget in Windows 10 - Linux Windows and android Tutorials

Wget is a powerful tool for downloading content from the internet. Here I show you how to install Wget in Windows with executables and WSL.

www.osradar.com

 

wget을 이용하기

wget을 이용해서 파일 내려받기 

먼저 wget을 이용해서 파일을 내려받는 코드는 아래와 같습니다. 

wget <내려받고 싶은 파일의 URL>

예를들면, 구글에서 다운로드 받고 싶은 파일의 경로를 복사한 후 wget 뒤에 붙여 넣으면 해당 폴더에 이미지가 다운로드 받아지는것을 확인할 수 있습니다.

여기서 이미지 주소를 복사하면 현재 경로에 파일이 생성되는것을 확인할 수 있습니다. 

만약에 파일로 저장하지 않고 내려받기 하려면 -O (대문자 O)라는 파이프 명령어를 붙여서 사용하면 됩니다.

만약 멜론의 정보를 얻고 싶다 하면

wget -O - http://www.melon.com

이런식으로 입력하면 되겠습니다. 

 

그러면 다음과 같은 정보가 터미널창에 나오는 것을 확인할 수 있습니다.

다음은 wget의 명령어가 어떤것이 있는지 확인하겠습니다. 

wget의 명령어

옵션 기능
-h 도움말을 출력합니다.
-q 진행 정보 등의 메시지를 출력하지 않습니다.
-o 진행 정보 등의 메시지를 파일로 저장합니다.
-O 파일에 저장합니다.
-c 이전에 내려받던 것을 재개합니다.
-t 재실행 횟수를 지정합니다.
-r 재귀적으로 링크를 타고 돌며 내려받습니다.
-l 재귀적으로 내려받을 때 링크를 순회하는 깊이를 지정합니다.
-w 재귀적으로 내려받을 때 내려받을 간격을 지정합니다.
-np 재귀적으로 내려받을 때 부모 디렉터리를 크롤링하지 않습니다.
-l 재귀적으로 내려받을 때 지정한 디렉터리만 순회합니다.
-N 파일이 변경됐을 때만 내려받습니다.
--user=<사용자 이름> 사용자 이름을 지정합니다.
--password=<비밀번호> 비밀번호를 지정합니다.
--refer=<URL> 레퍼러를 지정합니다.
--spider 파일을 내려받지는 않고 존재하는지 확인만 합니다.
-A 지정한 확장자의 파일만 내려받습니다.
-k 링크와 이미지등의 참조를 절대 경로에서 상대 경로로 변환합니다.

wget을 이용해서 크롤링하기 

다음은 Wget을 이용해서 크롤러로 사용하는 방법을 살펴 보겠습니다.

 

먼저 -r을 통해 재귀적으로 내려받는데 -l1옵션을 통해 재귀를 1단계 까지만 하겠습니다. 왜냐하면 너무 많이 주면 서버에 불필요한 과부하를 줄 수도 있기 때문입니다. 

wget -r -l1 http://www.melon.com

그러면 현재 경로에 다음과 같은 파일이 만들어지는 것을 확인할 수 있습니다.

그다음 안에 들어가면 index.html파일이 있는데 그것을 클릭하면 다음과 같이 멜론과 비슷한 html파일인 것을 확인할 수 있습니다.

다음은 재귀적으로 여러 파일을 내려 받을때 접근을 집중 시키기 위해 대기 시간을 지정해주겠습니다.

예를 들면 대기하는 옵션인 -w를 사용할건데 5초 대기 하고 싶으면 -w5이런식으로 입력해주면 되겠습니다.

다음은 genie에 있는 html정보를 받아오겠습니다.

wget -r -l1 -w3 https://www.bugs.co.kr/

마찬가지로 해당 폴더에 들어가면 잘 크롤링 된것을 확인할 수 있습니다. 

다음은 해당 파일에서 특정 확장자 파일을 내려 받겠습니다. 여기서 A옵션을 사용하면 특정 확장자만 다운로드 받을 수 있습니다.

명령어는 아래와 같이 입력하면 되겠습니다. 

wget -r -l1 -A jpg,png,gif https://www.musinsa.com/

 

이제 실제로 크롤링을 해보겠습니다.

먼저 크롤링할 사이트는 https://www.wikibook.co.kr/ 입니다. jpg,png,gif를 제외한 파일들을 3초 간격으로 다운로드 받겠습니다. 

wget -r -l1 -w3 -np -R jpg,png,gif https://wikibook.co.kr/

 

그 후 만들어진 wikibook.co.kr 파일에 들어가서 tree를 실행하면 다음과 같이 계층적 구조를 가진체 저장된 것을 확인할 수 있습니다.

이 내용은 아래의 책을 참고 하여서 작성하였습니다.

링크 :  wikibook.co.kr/python-crawler/

 

파이썬을 활용한 크롤러 개발과 스크레이핑 입문: 크롤러 설계와 개발부터 수집 데이터 분석과

웹 데이터 수집과 분석을 자동으로 처리해 보자! 인공지능, 머신러닝 기술의 발달과 더불어 최근 데이터 분석의 수요가 많아지고 있습니다. 데이터를 유의미한 자료로 활용하기 위해서는 다양

wikibook.co.kr

 

댓글