안녕하세요!
오늘은 크롤링 기초에 대해 정리하겠습니다.
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')
# 첫 번째 p 태그 요소 반환
soup.select_one('p')
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. 태그사이의 문자 추출
<h1 id='title'>[1] 크롤링이란? </h1>
태그사이의 문자열 추출
:. get_text() 또는. text를 사용
soup.select_one('p.cssstyle').get_text()
soup.select_one('p.cssstyle').text
3-2 태그의 속성값 가져오기
<a href="https://www.aladin.co.kr">[국내도서] 혼자 공부하는 파이썬 </a>
<img src="/assets/img/octopus.jpg" width="200px">
이미지나 하이퍼링크에 대한 정보는 태그의 속성에 들어있다.
태그의 속성값 추출해야 한다.
item ['속성이름']
item.get('속성이름')
#attribute 값 가져오기
atag['href']
감사합니다!
'데이터 > 데이터' 카테고리의 다른 글
[BeautifulSoup]네이버 증권 인기검색 종목, 해외 증시 크롤링 코드 (0) | 2023.07.23 |
---|---|
[BeautifulSoup]뉴스 이슈 리스트 가져오기, 링크 가져오기 코드 (0) | 2023.07.23 |
[BeautifulSoup] 다음 뉴스, 네이버 뉴스 기사 제목 크롤링 코드 (0) | 2023.07.23 |
[BeautifulSoup] 크롤링 패턴 코드 연습하기 (0) | 2023.07.23 |
데이터 분석 환경 설정하기/ Chat GPT 설치하고 사용하기(한글 번역) (0) | 2023.07.17 |