본문 바로가기

데이터 가져오기

Python 데이터 beautifulsoup

728x90
반응형

지금까징 데이터 크롤링을 위해 환경설정과 간단한 이론을 공부하였습니다.

그럼이제 데이터를 한번 불러와봐야 환경이 제대로 설치되었는지 알수 있겠죠?

 

오늘 학습할 라이브러리는 Beautifulsoup 입니다.

import requests 와 같이 사용합니다

그냥 아름다운 수프는 아닙니다. 이름만 그럽습니다. 이름만.....

 

먼저 beautifulsoup를 import를 해야하는데 이 모듈은 기본적으로 파이썬에서 제공하는 모듈이 아닙니다. 그러니 서브파티 모듈 다운법으로 다운로드 해주셔야 합니다. 서브 파티 모듈 다운 방법은 다들아시죠?

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

 

python 모듈

이번 시간에는 모듈을 알아봅시다.모듈이란 말을 처음 들어봤을 수도 있지만, 파이썬 코드을 한번이라도 보신적이 있으시다면 수도 없이 보았으 기능입니다.요런거 많이 보셨죠이게 바로 모듈

js-dowill.tistory.com

모듈명 : BeautifulSoup4

호출 방법 : from bs4 import BeautifulSoup

사용 방법 : soup # 이름 변경가능 = BeautifulSoup(html, "html.parser)

BeautifulSoup

  • 웹 서버롤 부터 Html 소스코드를 가져온 다음에는 Html 태그 구조를 해석하기 위한 과정이 필요하다.
  • HTML 소스 코드를 해석하는 것을 파싱(Parsing)이라고 부른다

find()메소드

  • soup.find(태그) : 처음 나오는 태그로 찾기
  • soup.find_all(태그) : 태그에 해당하는 모든 요소 찾아서 리스트로 변환함
  • soup.find(태그, attrs={'class':css_selector}) : 태그에 해당하는 선택자로 찾기

실습에 앞서 저번처럼 html 형식에 파일을 생성해 주세요. (PY파일로 생성해주세요)

from bs4 import BeautifulSoup

html_str = '''
<html>
  <body>
    <div id="content">
        <ul class = 'industry'>
            <li>인공지능</li>
            <li>백데이터</li>
            <li>스마트팩토리</li>
        </ul>
        <ul class = 'comlang'>
            <li>Python</li>
            <li>C++</li>
            <li>Javascript</li>
        </ul>
    </div>
  </body>
</html>
'''

 

''' ''' 구문은 주석 처럼 구분 되기도 하지만 한 변수에 긴 문자열을 저장하는 구문으로도 사용됩니다.

오늘은 이 html로 메소드를 알아 봅시다.

(보통 임의의 사이트 주소를 가져와서 테스트를 하는데 티스토리는 수익 구조가 있기에 잘못하면 저 신고먹어요ㅠㅠ)

 

실습(find() 메소드를 사용해봅시다)

  • 처음 나오는 ul 태그 찾기
  • 모든 요소를 li태그로 찾기
  • class 선택자로 찾기

 

select()메소드

  • soup.select_one(태그요소.선택자이름) : css_selector 에 해당하는 첫번째 태그 가져옴
  • soup.select(태그요소.선택자이름) : css_selector 에 해당하는 모든 태그 리스트를 가져옴

(저는 개인적으로 find보다 select를 많이 사용합니다.)

추가)

{tag}.get_text()  : 해당 테그의 텍스트 가져옴


실습(select() 메소드를 사용해봅시다)

  • 1개 요소 찾기 (선택자는 id, class 두가지 각각 가져오기)
  • 모든 요소 찾기

 

이제 주의 사항을 공부해봅시다!!!!!

제가 주의사항을 마지막에 둔 것은 제가 오늘 낼 과제와 앞으로 여러분이 크롤링을 할 때 반드시 준수해야하는 사항이기때문입니다.

 

데이터 크롤링시 주의사항

  • 특정 웹 사이트의 페이지를 쉬지 않고 크롤링하는 행위를 무한 크롤링을 하게 되면 해당 웹 사이트의 자원을 독점하게 되어 타인의 사용을 막게 되며 웹 사이트에 부하를 주게됩니다.
  • 일부 웹 사이트에서는 동일한 IP로 쉬지 않고 크롤링을 할 경우 접속을 막아 버리는 경우도 있습니다.
  • 하나의 페이지를 크롤링한 후 1~2 초 가량 정지하고 다시 다음 페이지를 크롤링하는 것이 좋습니다.
  • 신무기사나 책, 사진 등 저작권이 있는 자료를 통해 영업용 이익을 취득하는 행위는 저작권법 위반으로 법적 제제를 받을 수 있으므로 유의해야 합니다.

저희가 사이트에 코딩을 통해서 접근 할 경우 인간이 아닌 로봇이 접근하는 것으로 판단합니다. 그렇기에 이런 로봇 접근법에는 로봇 배제 표준이 라는 것이 존재합니다.

 

로봇 배제 표준이란?

  • 웹 사이트에 로봇이 접근하는 것을 방지하기 위한 규약, robots.txt에 기술하고 있음
  • 로봇에 의한 접근이 허용되는 경우라도 웹 서버에 무리가 갈 만큼 반복적으로 웹 페이지를 요청하는 것과 같이 서비스 안정성을 해칠 수 있는 행위를 하지 않아야합니다.
  • 크롤링(또는 스크래핑)으로 취득한 자료를 임의로 배포하거나 변경하는 등의 행위는 저작권을 침해할 수 있으므로 저작권 규정을 준수해야 합니다.

 

오늘은 여기까지 주의사항을 꼭 숙지해주시길 바랍니다.

 

과제

실습1. 국립중앙박물관 관람 정보를 크롤링 해보자

  • 국립중앙박물과 사이트에 접속한다.
  • robots.txt를 확인한다 꼭
  • 관람시간과 관람료를 크롤링한다.

<한트>
예시

 

실습2. 전자 신문 메인 기사 크롤링

  • 전자 신문 사이트에 접속한다.
  • robots.txt를 확인한다.
  • 메인화면 기사를 크롤링한다
    • 제목 가져오기
    • 발행일 가져오기
    • 본문 내용 가져오기

예시

해답예시는 늘 똑같이 하루코딩에 올리겠습니다!!!!

오늘도 같이 공부하시느라 수고 많으셨습니다!!!!!!

반응형

'데이터 가져오기' 카테고리의 다른 글

데이터 가상환경 설정  (0) 2024.12.11
데이터 CSS  (0) 2024.12.10
[데이터] 데이터 수집과 웹 기초 (2)  (3) 2024.12.09
[데이터] 데이터 수집과 웹 기초 (1)  (1) 2024.12.07