Wget이란
웹 서버로부터 콘텐츠를 가져오는 컴퓨터 프로그램으로, GNU 프로젝트의 일부입니다. 이 프로그램의 이름은 월드 와이드 웹과 get에서 합쳐진 Wget입니다. Wget은 HTTP, HTTPS, FTP 프로토콜을 통해 내려받기를 지원합니다.
또한 Wget은 단순하게 파일을 내려받는 용도 외에도 웹 페이지를 재귀적으로 순회하며 내려받거나, HTML 링크를 상대 경로에서 절대 경로로 변환하는 기능도 제공합니다. 이렇게 Wget은 크롤링으로 다양한 기능을 사용할 수 있습니다.
Wget설치하기
MacOS에서 설치하기
먼저 MacOS는 터미널에 들어가서 Homebrew를 통해 간단하게 설치를 할 수 있습니다.
brew install wget
또는 다음과 같은 사이트에 들어가서 다운로드를 받을 수 있습니다. ftp.gnu.org/gnu/wget/
리눅스환경에서 설치하기
리눅스에서 설치하는 명령어는 두가지가 있습니다.
yum install wget
apt-get install wget
Windows환경에서 설치하기
윈도우즈 환경에서 wget을 설치하는 방법은 아래 링크에서 참고하시면 되겠습니다.
www.osradar.com/how-to-install-wget-in-windows-10/
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/
'Python > Python크롤링' 카테고리의 다른 글
크롤링한 데이터 DB에 저장하기 (0) | 2020.10.28 |
---|---|
파이썬 정규표현식 (0) | 2020.09.08 |
DOM 구조 트리 이동 (0) | 2020.09.08 |
find( ), findAll( ) (0) | 2020.09.08 |
000. chrome driver.exe와 selenium을 이용해 구글 접속하기 (0) | 2019.10.05 |
댓글