co-code 님의 블로그

웹 크롤링 본문

python

웹 크롤링

co-code 2026. 4. 23. 10:58
  • 사용하는 라이브러리
    • requests
      • 웹 서버에 요청을 보내고 응답을 받는 기능
      • 응답 데이터는 bytes나 string형
    • bs4
      • BeautifulSoup class 이용
      • html로 이루어진 문자 데이터를 parsing 작업을 통해서 데이터의 타입을 변경하여 내부의 데이터에 쉽게 접근하여 추출하기 위한 기능
        • "<html><body><p>Text</p></body></html>"태그를 기준으로 데이터에 접근할 수 있는 함수들이 존재
          • 태그를 기준으로 검색하는 방법
            • soup.태그명
              • 해당 html문서 안에서 해당 태그중 첫번쩨 태그를 되돌려줌
              • 문자열 함수에서 find()함수와 비슷
            • soup.태그명.string
              • 첫번째 태그에서 콘텐츠(태그 안의 데이터)를 되돌려줌
                • ex) `<p>.Test</p> --> 'Test'
            • soup.태그명[속성명]
              • 첫번째 태그에서 특정 속성의 값을 되돌려줌
                • ex) `<a href = 'https://www.naver.com'>네이버</a>` --> `https://www.naver.com`
      • 웹의 기본 구조를 파악하고 사용하면 조금 더 쉽게 접근가능
        • 태그 별 속성의 값
        • 태그의 특징
      • 내장함수
        • find()
          • html문서 안에서 특정 태그의 첫번째 정보를 출력
          • find(속성명=속성값)
            • 태그들 중 특정 속성에 특정한 값을 가진 첫번째 정보를 출력
            • 함수의 결과값의 타입은 TAG데이터 타입으로 되돌려줌
        • find_all()
          • html문서 안에서 특정 태그의 모든 정보를 출력
          • limit매개변수
            • 찾는 태그의 개수를 지정
          • 함수의 결과값의 타입은 ResultSet 타입으로 되돌려줌
        • find(), find_all()함수는 Tag타입에서는 사용 가능 but ResultSet에서는 사용 불가능
        • ResultSet타입은 Tag데이터들이 모여있는 리스트의 형태와 흡사
    • selenium
      • 웹 어플리케이션을 테스트하기 위한 라이브러리
      • 웹 브라우저(chrome,...)를 python code를 이용하여 제어
        • 함수를 이용해서 특정 버튼을 클릭
        • 특정 위치에 데이터를 입력
      • 구글 chrome이 구버전인 경우 별도의 소프트웨어 설치 필요
      • 내장함수
        • find_element()
          • 특정 조건에 맞는 태그 중 첫번째 태그를 선택
          • bs에서 find()와 흡사한 기능
        • find_elements()
          • 특정 조건에 맞는 태그 모두를 추출
          • bs에서 find_all()과 흠사하는 기능
          • tag들이 모인 list형태로 간주
  • 데이터를 가져오는 방법(합법 / 위법 사이)
    • 상업적인 용도가 아닌 수업정도에서의 내용은 큰 지장 X
    • 사이트들마다 크롤링이 가능한 주소들은 지정되어 있음
      • 크롤링 가능한 사이트 확인방법 : 사이트 주소/robot.txt

'python' 카테고리의 다른 글

이진 분류  (0) 2026.05.13
데이터 불균형 문제 및 완화 방법  (0) 2026.05.08
이상치 판별 및 처리  (2) 2026.05.08
matplotlib을 이용한 시각화  (0) 2026.04.29
클래스(Class)란? 구성 및 상속  (0) 2026.04.15