[BeautifulSoup] 크롤링 환경 설정, 태그, 글자 추출

리냥·2023년 7월 23일

안녕하세요! 오늘은 크롤링 기초에 대해 정리하겠습니다.

1. BeautifulSoup 환경 구성하기

!pip install beautifulSoup4

먼저 beautifulSoup4을 설치합니다. 이후 bs4라는 패키지로부터 BeautifulSoup라는 모듈을 임포트합니다.
# bs4라는 패키지로부터 BeautifulSoup라는 모듈을 임포트
from bs4 import BeautifulSoup

html = """
<html>
    <body>
        <h1 id='title'>[1]크롤링이란?</h1>
        <p class='cssstyle'>웹페이지에서 필요한 데이터를 추출하는 것</p>
        <p id='body' align='center'>파이썬을 중심으로 다양한 웹크롤링 기술 발달</p>
        <a href = 'http://www.facebook.com'> 바로가기 </a>
        <ul id="aladin_list">
            <li class="cssstyle" id='start'>[국내도서]신나는 파이썬</li>
            <li class="course" id='start'>[국내도서] 혼자 공부하는 파이썬</li>
            <li class="course" id='end'><a href="https://www.aladin.co.kr">[국내도서] Effective Python 2nd 이펙티브 파이썬 : 파이썬 코딩의 기술 </a></li>
        </ul>
        <img src='https://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Dumbo-hires_%28cropped%29.jpg/330px-Dumbo-hires_%28cropped%29.jpg'>
    </body>
</html>
"""

html을 가정했을때 아래와 같이 지정해줍니다.

# BeautifulSoup 인스턴스 생성. 두번째 매개변수는 분석할 분석기(parser)의 종류.
soup = BeautifulSoup(html, 'html.parser')

2. 태그 선택

2-1. 태그 이름이 tag1인 html요소를 리스트 형태로 모두 반환한다.

soup.select('tag1')

2-2. 태그 이름이 tag1인html요소중 첫번째 요소만 반환한다.

soup.select_one('tag1')

# <body> 태그를 입력
soup.select('body')

soup.select()

# 첫 번째 p 태그 요소 반환
soup.select_one('p')

soup.select_one()


2-3 하위 태그 선택


바로 아래 자식요소만 선택합니다.
'>' 를 사용합니다.

soup.select('tag1 > tag2')

길이가 너무 긴 경우 중간 생략하고 하위 요소를 선택합니다.
공백을 사용합니다.

soup.select('tag1 tag2')

soup.select('body>ul>li')


2-4. css class이름으로 검색


클래스이름'** 으로 검색한다.
class이름 앞에 점(.)을 사용해야 한다.

soup.select('.class1')
soup.select_one('.class1')

#둘을 구별하려면 더 자세히
soup.select('p.cssstyle')

2-5. id 이름으로 검색

#id이름** 으로 검색
id 값은 중복되지 않은 유일한 값이다.
찾고자 하는 태그에 id값이 있다면 더 쉽게 검색 가능하다.

soup.select('#id1')
soup.selec_one('#id1')

#id는 중요한포인트에만 지정, 그래서 유일한 값이기에 id가 있으면 바로 접근해야함

soup.select('li#end')

3. 태그 문자 추출


3-1. 태그사이의 문자 추출


태그사이의 문자열 추출 :.get_text() 또는 .text 를 사용
soup.select_one('p.cssstyle').get_text()
soup.select_one('p.cssstyle').text


3-2 태그의 속성값 가져오기


이미지나 하이퍼링크에 대한 정보는 태그의 속성에 들어있다. 태그의 속성값 추출해야한다.


item['속성이름'], item.get('속성이름')


#attribute 값 가져오기
atag['href']

감사합니다!

profile
안녕하세요. 일로 인해 잠시 쉽니다 :)

0개의 댓글