웹크롤링에 대해서 배우다 보면 우리 사람이 컴퓨터를 키고 웹브라우저에 접속하는 프로세스에 대해서 감을 익히게 된다. 개인적으로 이런 느낌을 받은 적은 바로 User-Agent 개념에 대해서 배우고 난 뒤인 것 같다. 물론 특정 웹마다 다르겠지만 어떤 웹브라우저는 get, post 방식을 날리는 상대방이 컴퓨터인걸 알면 해당 웹에 접속하는 것을 차단하는 경우가 있다. 우리는 이를 방지하기 위해서 " 나 컴퓨터아니고 사람이야 ! " 라고 사람인 ' 척 ' 하기 위해 User-Agent를 사용한다고 생각하면 되겠다. 본격적으로 내가 해당 개념을 배울 때 작성했던 코드를 살펴보자.
User-Agent 클래스는 보통 fake_useragent라는 패키지에서 import를 시킨다.. 패키지 이름이 ' 가짜 유저 ' 라.... 한번 보는 순간 머릿속에 강인하게 남는다... 잊어먹진 않을듯 싶다..
위 사진은 Daum 사이트에 있는 주식 화면에서 특정 상위 주식 순위에 대한 Referer과 User-Agent를 살펴보는 사진이다.
크롬 개발자도구(단축키 F12키)에서 Network 탭을 가면 찾아볼 수 있다. 참고로 Referer는 갖고 오고싶은 해당 사이트로 오기 바로 직전의 사이트라고 보면 된다.(즉, 사이트 방문을 남긴 흔적.. )
우리는 해당 브라우저에 접속하기 위해서 Header(헤더)를 만들어주어야 한다. Header = User-Agent + Referer 로 구성시켜주면 된다. User-Agent는 개인이 각자 쓰는 브라우저에 따라 임의로 만들어주면 되는데 밑에 사진을 보자.
위 주석 처럼 UserAgent에 대해서 해당 브라우저에 맞는 것으로 설정해주면 된다. 그리고 헤더에다가 UserAgent정보와 referer 정보를 담아 주어서 url에 요청을 할 준비를 한다.
요청하고 싶은 특정 URL 을 할당해 주고 request의 urlopen을 활용하여 요청해준다. 참고로 utf-8 코드로 디코딩 해주면 좋겠다..! 그리고 응답 데이터를 확인 후에 문자열을 json형태로 바꿔주고 해당 데이터 속 'data'라는 값을 출력해준다.
마지막으로 반복문으로 내가 갖고오고 싶었던 데이터들을 출력시켜 준다. 센스 있게 format형태를 이용해서 출력해보면
더욱 더 가독성 있게 출력할 수 있었다. 그리고 마지막 주석처럼 파일로 저장하거나 데이터베이스에 저장하는 시도도 다음에 해봐야 할 거 같다.. 저 때 당시에 배우는 시간이라 코드 따라가기도 벅찼어서... 꼭 해봐야겠다..!
# 해당 코딩에 대한 원본 내용은 내 Github에 있으므로 보고 싶으신 분은 보셔도... 될 것 같다!
https://github.com/young-hun-jo/Python_Prac/commit/a0823359ff3d43cfca22ade5f55d66a41b90bbbc
'Python > Crawling' 카테고리의 다른 글
[Python웹크롤링] Selenium을 이용해 사람인 채용정보 크롤링 (0) | 2020.01.28 |
---|---|
[Python웹크롤링] REST API에 대한 이해 (0) | 2020.01.27 |
[Python웹크롤링] Session 활성화와 Cookie 전송 받기 (0) | 2020.01.12 |
[Python웹크롤링] requests 와 lxml 을 사용한 스크래핑 (0) | 2020.01.08 |
[Python웹크롤링] urllib 모듈로 image, html 다운로드 (0) | 2020.01.07 |