본문 바로가기

Python/Crawling

[Python웹크롤링] 웹크롤링시 User-Agent의 사용

반응형

웹크롤링에 대해서 배우다 보면 우리 사람이 컴퓨터를 키고 웹브라우저에 접속하는 프로세스에 대해서 감을 익히게 된다. 개인적으로 이런 느낌을 받은 적은 바로 User-Agent 개념에 대해서 배우고 난 뒤인 것 같다. 물론 특정 웹마다 다르겠지만 어떤 웹브라우저는 get, post 방식을 날리는 상대방이 컴퓨터인걸 알면 해당 웹에 접속하는 것을 차단하는 경우가 있다. 우리는 이를 방지하기 위해서 " 나 컴퓨터아니고 사람이야 ! " 라고 사람인 ' 척 ' 하기 위해 User-Agent를 사용한다고 생각하면 되겠다. 본격적으로 내가 해당 개념을 배울 때 작성했던 코드를 살펴보자.

설명과 필요한 패키지 import

User-Agent 클래스는 보통 fake_useragent라는 패키지에서 import를 시킨다.. 패키지 이름이 ' 가짜 유저 ' 라.... 한번 보는 순간 머릿속에 강인하게 남는다... 잊어먹진 않을듯 싶다.. 

Referer 과 User-Agent 찾는 방법

위 사진은 Daum 사이트에 있는 주식 화면에서 특정 상위 주식 순위에 대한 Referer과 User-Agent를 살펴보는 사진이다.

크롬 개발자도구(단축키 F12키)에서 Network 탭을 가면 찾아볼 수 있다. 참고로 Referer는 갖고 오고싶은 해당 사이트로 오기 바로 직전의 사이트라고 보면 된다.(즉, 사이트 방문을 남긴 흔적.. ) 

우리는 해당 브라우저에 접속하기 위해서 Header(헤더)를 만들어주어야 한다. Header = User-Agent + Referer 로 구성시켜주면 된다. User-Agent는 개인이 각자 쓰는 브라우저에 따라 임의로 만들어주면 되는데 밑에 사진을 보자.

User-Agent 정의예시와 headers 정의

위 주석 처럼 UserAgent에 대해서 해당 브라우저에 맞는 것으로 설정해주면 된다. 그리고 헤더에다가 UserAgent정보와 referer 정보를 담아 주어서 url에 요청을 할 준비를 한다.

URL 요청과 응답 데이터 확인

요청하고 싶은 특정 URL 을 할당해 주고 request의 urlopen을 활용하여 요청해준다. 참고로 utf-8 코드로 디코딩 해주면 좋겠다..! 그리고 응답 데이터를 확인 후에 문자열을 json형태로 바꿔주고 해당 데이터 속 'data'라는 값을 출력해준다.

반복문을 통한 데이터 출력

마지막으로 반복문으로 내가 갖고오고 싶었던 데이터들을 출력시켜 준다. 센스 있게 format형태를 이용해서 출력해보면

더욱 더 가독성 있게 출력할 수 있었다. 그리고 마지막 주석처럼 파일로 저장하거나 데이터베이스에 저장하는 시도도 다음에 해봐야 할 거 같다.. 저 때 당시에 배우는 시간이라 코드 따라가기도 벅찼어서... 꼭 해봐야겠다..!

 

# 해당 코딩에 대한 원본 내용은 내 Github에 있으므로 보고 싶으신 분은 보셔도... 될 것 같다!

https://github.com/young-hun-jo/Python_Prac/commit/a0823359ff3d43cfca22ade5f55d66a41b90bbbc

반응형