서비스 기획자의 성장기록

[웹 크롤링/데이터 수집] Request 모듈로 원하는 데이터 불러오기 본문

웹 크롤링/데이터 수집 (Python)

[웹 크롤링/데이터 수집] Request 모듈로 원하는 데이터 불러오기

Jenny Noh 2023. 10. 31. 19:01

웹에서 원하는 데이터를 추출하기 위해서는 일단 웹 페이지의 정보를 불러와야한다.

이때 사용되는 패키지가 requests 모듈의 get() 함수이다.

 

 

1. 기본 형식

기본형식

 

- url: 데이터를 가지고 오고 싶은 웹의 url

 

- params: Query string을 전달하는 변수

  구글에서 python을 검색하면 해당 url은 google.com/search?q=python 로 표기된다.

  이 때 ? 뒤에 들어가는 q=python 형식의 문자열이 query string에 해당한다.

  이를 params 객체로 전달할 때는 {"q":"python"} 과 같이 딕셔너리 형태로 전달한다.

 

- **kwargs: 그 외의 매개변수를 전달하는 값; 요청 메세지에서 header에 포함되는 값

 

 

 


 

2. 실습

네이버 검색엔진에서 'python'을 검색한 결과를 가져와 보자.

response.status_code로 응답 코드를 받는다. (200이면 성공!)그리고 response.text로 불러온 웹 페이지의 html 텍스트를 출력한다.

 

실행 결과:

 

 


 

3. Header에 user-agent 값 넣어서 보내기

직접적인 url 주소로 웹사이트에 접근하면 웹사이트에서 웹크롤링을 통해서 접근한 것을 감지해 접속을 차단할 수 있다.

그래서 로봇이 아님🤖 을 나타내기 위해 요청을 보낼 때 header에 user-agent 값을 넣어서 보낸다.

User-agent 값을 넣어서 보내면 웹 브라우저를 통해 요청을 보내는 것으로 인식하기 때문에 원활하게 접속할 수 있다!

 

 

  User-agent 값 얻는 법  

 

1) 웹 브라우저 접속 - fn+f12 (맥)로 개발자 모드 접속

 

 

 

2) 상단 Console 탭 - 콘솔창에 navigator.userAgent 입력

 

청록색으로 나온 부분이 내가 사용하는 user-agent 값이다. 이것을 복사해서

 

 

 

  User-agent 넣어서 웹페이지 불러오기  

 

headers 딕셔너리에 'user-agent' 키의 value 값으로 넣어준다.

requests.get() 함수에 params (cat photo를 검색어로 주었다🐱) 와 headers 키워드 변수를 넣어준 후,

 

 

해당 response 값을 text로 변환하여 (html) <search_result2.html>이라는 파일명으로 저장해 주었다. 

 

 

이렇게 현재 디렉토리에 파일이 생기는데 해당 파일을 열면

 

Meooooow 🐈

구글에서 'cat photo'를 검색한 결과 페이지가 열린다! 

 

 

 

끗!