[데이터 추출 및 가공 02] curl 의 기본 사용법

Home / 데이터 추출과 가공 / [데이터 추출 및 가공 02] curl 의 기본 사용법
curl 의 기본 사용법
데이터를 구할 수 있는 대표적인 곳은 인터넷입니다. 주로 웹페이지 형식의 자료에서 데이터를 구합니다. 이때 사용할 수 있는 커맨드가 curl 입니다. curl커맨드를 사용하면 웹페이지의 html소스를 내려받아 화면에 출력하거나 파일에 저장할 수 있습니다.
curl과 비슷한 커맨드로 wget 이 있습니다. 두 커맨드 사이에는 약간의 차이가 있지만 인터넷에서 html소스와 같은 자료를 내려받는다는 면에서는 거의 같다고 봐도 무방합니다. 여기에서는 라이브러리로 만들어져 있어 다른 소프트웨어에서도 사용하는 curl을 선택해서 설명하겠습니다.
지난번 글에서 언급한 네 가지 커맨드중에 sed, grep, awk 는 처음 만들어진 때가 40년도 더 된 커맨드들입니다. 반면 curl은 비교적 최근인 1997년에 처음 만들어졌습니다. 이때는 월드 와이드 웹 (www)이 본격적으로 대중화되기 시작한 시기입니다. curl이 인터넷에서 웹페이지나 파일을 내려받는 기능이 주된 기능이라는 것을 감안하면, 왜 curl이 이 시기에 나왔는지를 짐작해 볼 수 있습니다.
이제 본격적으로 curl에 대해 알아보겠습니다. 먼저 curl이 설치가 되어있는지를 확인해야합니다. terminal을 연 다음 curl을 실행해 보면 알 수 있습니다. 아래의 커맨드를 입력하고 Enter를 쳐서 실행해보죠.
curl https://pytorch.org
참고로 pytorch.org는 pytorch라는 딥러닝 라이브러리 웹페이지 입니다.
만약에 curl이 설치되어 있지 않으면 다음과 같은 오류 메시지가 뜹니다.
Command 'curl' not found.
그러면 curl을 설치해야합니다.
사용하는 컴퓨터의 운영체계가 우분투이면 아래 커맨드 한 줄로 curl을 바로 설치할 수 있습니다.
sudo apt-get install curl -y
사용하는 컴퓨터가 Mac이라면 아래의 커맨드를 실행해야합니다.
sudo brew install curl -y
만약에 Mac에서 위의 커맨드로 설치가 않되면 다음 링크를 따라하시면 됩니다.
curl을 설치한 다음 아래 커맨드를 다시 실행하면, 터미널 화면을 https://www.pytorch.com주소의 웹페이지 html 소스로 꽉 채웁니다.
curl https://pytorch.org
이때 화면에 나오는 텍스트가 바로 웹 브라우저에서  https://pytorch.org 를 볼떄 나오는 웹페이지를 만드는 html 내용입니다. 웹브라우저에서 오른쪽 마우스 버튼을 눌러 나오는 ‘view page source’를 클릭했을때 보여주는 html 내용과 같습니다.
여기에서 한가지 짚고 넘어자자면, curl 커맨드와 같이 쓰는 웹페이지 주소는 아래와 같이 따옴표로 묶어주는 것이 좋습니다.
curl "https://pytorch.org"
웹페이지 주소에 들어가는 기호가 종종 문제를 일으키기 때문입니다.
지금까지는 웹페이지 주소에서 내려받은 html소스를 화면에 출력했습니다. 화면에 출력하는 대신 html소스를 파일에 저장할 수도 있습니다. pytorch.html 이라는 파일에 저장하려면 커맨드 끝에 > pythorch.html 을 덧붙인다음 커맨드를 실행하면 됩니다.
curl "https://pytorch.org" > pytorch.html
그러면 pytorch.html 에 https://pytorch.org 이 보여주는 웹페이지의 html 소스가 저장됩니다. > 기호 다음에 파일 이름을 적으면 화면에 출력하는 내용을 화면에 출력하지 않고 파일이 저장합니다.
위의 커맨드를 실행하면  화면에 다음과 같은 내용도 뜹니다.
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 18353  100 18353    0     0  66256      0 --:--:-- --:--:-- --:--:-- 66256
html 소스를 내려받은 것에 대한 통계입니다. 이 내용은 html소스에는 없는 내용이고, 우리가 필요한 내용도 아니어서 화면에 보일 필요도 없습니다. 이 내용을 화면에 안내보내게 하려면 curl 커맨드에 -s 옵션을 추가해 다음과 같은 커맨드를 실행하면됩니다.
curl -s https://pytorch.org > pytorch.html
-s 옵션은 html 소스를 내려받은 것에 대한 통계를 보여주지 않게하는 옵션입니다.
이제 우리가 원하는 어떤 웹페이지의 html 소스도 내려받아 파일에 저장할 수 있습니다.
구글의 첫 웹페이지를 google.html에 저장하려면
curl -s https://www.google.com > google.html
을 실행하면 됩니다.

다른 예로 naver.com에서 제 이름인 “윤복원”을 검색한 결과를 보여주는 웹페이지의 html소스를 내려받아보겠습니다.

먼저 네이버의 검색창에 “윤복원”을 친 다음 돋보기모양의 검색 아이콘을 누르거나 Enter키를 치면 검색결과가 화면에 출력됩니다. 동시에 웹브라우저 주소창에는 웹페이지 주소가 남습니다. 이 주소를 복사해서 curl -s “” 의 따옴표사이에 붙여 넣고 실행하면 검색결과 html소스가 화면에 출력됩니다.

curl -s "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=%EC%9C%A4%EB%B3%B5%EC%9B%90"

화면에 출력하는 대신 bokwonyoon.html 파일에 저장하려면 커맨드 맨 뒤에 > bokwonyoon.html 을 추가해 실행하면됩니다.

curl -s "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=%EC%9C%A4%EB%B3%B5%EC%9B%90" > bokwonyoon.html