HTML | 웹 크롤링 BeautifulSoup와 Requests 무슨 차이야?

소리·2023년 10월 16일
0

🤔 웹 크롤링 시 어떤 함수와 문법이 어떻게 쓰이는지 헷갈려서 하는 정리!

용어 정리

  • 크롤링 : 웹 페이지에서 필요한 정보 추출
  • 웹페이지 : HTML 문서
  • HTML를 가져오기 위해서 ➡️ Request lib
  • 가져온 HTML 분석을 위해서 ➡️ BeautifulSoup lib
  • 크롤링 하는 프로그램 ➡️ 크롤러

🔎 BeautifulSoup library

HTML, XML, JSON 등 파일 구문을 분석하는 모듈

soup = BeautifulSoup(open("index.html"), "html.parse")

- 관례적으로 soup라는 객체를 사용함
- index.html 파일을 열고, 그것을 html로 분석하라는 의미
- "html.parser"를 굳이 명시 안하면 자동으로 "html.parser"로 설정됨
- open함수, "html.parser" 모두 파이썬 내장임

🔎 Requests library

파이썬에서 http 요청(서버 쪽에 정보를 가져오기 위해 보내는 것)을 보낼 수 있는 모듈

url = "https://www.naver.com"
result = requests.get(url)

result.text #이게 html 부분

🔎 urllib

url을 다루기 위한 모듈, HTTP, FTP, SMTP와 같은 프로토콜을 사용하여 URL을 열고 읽고 쓰는 기능 제공

HTTP : 웹 상에서 다양한 리소스를 전송하기 위한 프로토콜
FTP : 컴퓨터 간에 파일을 송수신하기 위해 사용, 파일 전송을 쉽게 할 수 있음
SMTP : 이메일 클라이언트와 메일 서버 간의 통신에 사용하여 메세지 전달

urllib.request 다양한 방식으로 URL을 열고 데이터를 가져온다.

  • urlopen() : URL을 열어서 httpResopnse 객체를 반환하는 함수. 이 객체는 read() 메서드를 사용해서 응답 본문을 가져올 수 있다.

    import urllib.request
    
    response = urllib.request.urlopen('http://www.naver.com')
    html = response.read()
    
  • urlretrieve('다운로드 url', '저장 파일 경로') : UR에서 파일을 다운로드해 로컬 파일로 저장하는 함수이다.

     import urllib.request
    
     url = 'http://www.naver.com/image.jpg'
     filename = 'image.jpg'
     
     urllib.request.urlretrieve(url, filename)
    

urllib.parse URL 분석하기 위한 함수들을 정의

  • urllib.parse.quote(string, safe, encoding, errors) : 아스키코드 형식이 아닌 글자를 url 인코딩한다.(특수문자를 문자열로 변환하여 반환)
     string : string, bytes 형식으로 특수문자가 포함된 문자열 삽입
     safe : URL encoding에서 제외할(변환하지 않을) 문자 삽입 (default = /)
     encoding : 인코딩 방식 지정 (default = 'utf-8')
     error : 인코딩 에러를 처리하는 방식 지정 (default = 'strict)
     
    대응하는 디코딩 : urllib.parse.unquote(string, encoding='utf-8', errors='replace')

세부 참고 / 2

profile
데이터로 경로를 탐색합니다.

0개의 댓글