상세 컨텐츠

본문 제목

07. Web Scrapping

데이터 분석/웹 스크래핑

by 알파고제로 2023. 10. 26. 08:51

본문

■ 특정 사이트 접속

  • requests 객체를 import 한 후 get() 함수를 이용해 지정된 사이트에 접속한다.
response = requests.get(url, params, **kwargs)
  • url  : 접속할 url 정보
  • params  : 해당 url의 파라미터 문자열 정보 입력(dictionary 객체로 전달)
  • **kwargs : 그 외 매개변수
    • verify=False : SSL 인증서를 사용하는 경우
    • auth=(“id”,”pass”) : 인증이 필요한 경우
    • headers = {'Content-Type': 'application/json; charset=utf-8'}
    • cookies = {'sessionKey': 'sessionValue'}
    • timeout = 3

 

 requests 모듈을 이용한 사이트 접속 후 페이지 정보 가져오기

import requests
response = requests.get("http://naver.com")  # 200이면 정상
print('응답코드 : ', response.status_code)
print(response.text)			 # 네이버 서버의 html 문서를 출력
◎ 데이터 파싱
       requests.get(url).text  (text 형태로 추출)
        requests.get(url).content  (byte 형태로 추출)

  상태 코드 확인
        response.status_code (상태코드 확인)
import requests

response = requests.get("http://google.com")
print('응답코드 : ', response.status_code)

response.raise_for_status() 	# 접근 할 수 없으면 오류를 발생 시킨 후 종료.  아래 if문으로 확인하는 것도 가능

if response.status_code == requests.codes.ok:
    print("정상입니다.")
else:
    print("오류발생  [ 에러코드 " , response.status_code ,"]")

 

■ 응답코드

  • 지정된 사이트에 접속한 후 status_code 속성을 이용하면 응답 코드 값을 알 수 있다.
  • 응답코드 값이 200이면 정상 접속,  다른 값이면 오류이거나 권한이 없음을 나타내므로 상태에 따라  처리를 다르게 해야 한다.
import requests
response = requests.get("http://naver.com")  # 200 : 정상
print('응답코드 : ', response.status_code)

 

■ parameter를 이용한 검색결과 조회

  • 요청을 보낼 때  파라미터를 이용해 그 결과를 확인할 수 있다.
import requests

URL = 'https://movie.daum.net/moviedb/main' 
params = {‘movieId’:'41246'}

response = requests.get(URL, params=params)
response.raise_for_status()

with open('GoodNightAndGoodLuck.html', 'w', encoding='utf-8') as f:
    f.write(response.text)
  • 파라미터가 여러 개일 경우 다음과 같이 dictionary 여러 개를 주어  처리가능
URL = 'https://comic.naver.com/webtoon/detail.nhn' 
params = {'titleId' : 703846, 'no': 144, 'weekday':'tue'}

'데이터 분석 > 웹 스크래핑' 카테고리의 다른 글

08. 정규 표현식 - 1  (0) 2023.10.26
06. HTTP 요청/응답  (0) 2023.10.25
05. DOM(Document Object Model)  (0) 2023.10.25

관련글 더보기

댓글 영역