자신의 일은 스스로하자

[웹 크롤링] #1 파이썬으로 네이버 / Melon 페이지 정보 불러오기 [스마트인재개발원] 본문

웹 크롤링

[웹 크롤링] #1 파이썬으로 네이버 / Melon 페이지 정보 불러오기 [스마트인재개발원]

힐파르 사막 삼계탕 2021. 6. 4. 16:44
728x90

웹 크롤러란?

 

  웹 크롤러(wed cralwler)는 조직적, 자동화된 방법으로 월드 와이드 웹을 탐색하는 컴퓨터 프로그램입니다. 웹 크롤러가 하는 작업을 '웹 크롤링'(web crawling) 혹은 '스파이더 링'(spidering)이라 부릅니다. 검색 엔진과 같은 여러 사이트에서는 데이터의 최신 상태 유지를 위해 웹 크롤링을 합니다.

 

  웹 크롤러는 대체로 방문한 사이트의 모든 페이지의 복사본을 생성하는 데 사용되며, 검색 엔진은 이렇게 생성된 페이지를 보다 빠른 검색을 위해 인덱싱 합니다. 또한 크롤러는 링크 체크나 HTML 코드 검증과 같은 웹 사이트의 자동 유지 관리 작업을 위해 사용되기도 하며, 자동 이메일 수집과 같은 웹 페이지의 특정 형태의 정보를 수집하는 데도 사용됩니다.

 

 

※ 크롤링을 하는 프로그램은 Jupyter Notebook입니다.


네이버 홈페이지 정보 가져오기

 

  • Requrst : 페이지의 정보를 요청할 때 사용하는 라이브러리

먼저 requrst를 import 해줍니다.

requrst를 줄인 req를 활용해. get() 함수를 불러 네이버 페이지를 요청합니다.

이것을 res라는 변수에 담아 줍니다.

res를 실행했을 때 결과가 <Response [200]>이 나왔다면 페이지를 가지고 왔다는 뜻입니다. (만약 결과에 <Response [406]>가 나왔다면 응답할 수 없다는 뜻입니다.)

res.text로 요청한 페이지의 정보를 보면 위 사진처럼 많은 정보가 출력됩니다.

 


 

- Melon 홈페이지 정보 가지고 오기

 

 

Melon은 req.get()을 활용해 불러오면 <Response [406]>라고 결과가 나옵니다.

위에서 말했듯이 결과가 <Response [406]>는 응답하지 못했다는 뜻으로 다른 방법으로 불러와야 합니다.

 

 


방법은 

 

  1. Melon홈페이지에서 F12를 눌러 검사 페이지(?)를 열어주세요.
  2. 상단에 Network에 들어가 주세요 (아무것도 나오지 않는다면 Ctrl+R키를 눌러줍니다.)
  3. 맨 위 상단 >> www.melon.com를 선택해주세요. ( www.melon.com가 없다면 Type이 document인 것을 눌러줍니다)
  4. 위 상단 사진과 같은 화면이 뜹니다. 맨 아래 User-Agent로 시작되는 문장을 전체 복사합니다.

 

 

복사하면

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win 64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36

↑위 같은 형식으로 나옵니다.  이것을 딕셔너리 형식으로 묶어 줍니다.

 

h = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"}

 

<<   : ←을 기준으로 묶어줍니다.   >>

 

이렇게 딕셔너리로 묶은 후 다시 req.get()으로 가져오면

 

이때 headers로 앞에 작성한 h 딕셔너리를 반드시 받아줍니다.

그러면 <Response [200]>이 나온 것을 확인할 수 있습니다. 

 

 

res.text로 요청을 하면 네이버 페이지 정보를 불러온 것처럼

Melon 페이지 정보도 잘 불러와진 것을 볼 수 있습니다. 

 

 

 

 

스마트인재개발원에서 진행된 수업입니다.

www.smhrd.or.kr

 

스마트인재개발원

4차산업혁명시대를 선도하는 빅데이터, 인공지능, 사물인터넷 전문 '0원' 취업연계교육기관

www.smhrd.or.kr

 

 

728x90