영벨롭 개발 일지

[Python]파이썬 BeautifulSoup 사용법 : 크롤링 Crawling, 데이터 파싱 본문

Programming Language/Python

[Python]파이썬 BeautifulSoup 사용법 : 크롤링 Crawling, 데이터 파싱

영벨롭 2022. 4. 22. 16:52

https://iridescent-zeal.tistory.com/134?category=1267485 

 

[Python]파이썬 requests 라이브러리 정리하기

[웹 크롤링 Web Crawling]  웹 크롤링은 웹 크롤러(Web Crawler, 웹 페이지의 데이터를 모아주는 소프트웨어)를 사용하여 웹 페이지의 데이터를 추출해내는 것입니다.  HTML 페이지를 가져와서, HTML/CSS

iridescent-zeal.tistory.com

 

 

[ BeautifulSoup 라이브러리 ]

 

 HTML, XML, JSON 등 파일의 구문을 분석하는 모듈로 웹 페이지를 표현하는 HTML을 분석하기 위해 사용하는 라이브러리입니다. 

 

 즉, 우리가 가져온 데이터를 의미있는 데이터로 바꾸어주는 역할을 합니다. 

 

 

 

 

[ 설치 및 import ]

 

  • 터미널에서 설치
> pip install beautifulsoup4

 

  • import
from bs4 import BeautifulSoup

 

 

 

[ BeautifulSoup 객체 만들기 ]

 

 BeautifulSoup(데이터, 파싱방법)은 우리가 가져온 데이터를 해당 파싱방법을 통해 데이터를 파싱하여 BeautifulSoup 객체에 넣어 반환해줍니다. 

 

 html.parser는 파이썬 내장 파서로, 파싱방법을 별도로 작성하지 않아도 BeautifulSoup 객체가 자동으로 "html.parser"를 작동시킵니다. 

 

#soup = BeautifulSoup(데이터, 파싱방법)

response = requests.get("https://google.com")

soup = BeautifulSoup(response.text, "html.parser")

 

 

 

 

 

[ 데이터 추출하기 ]

 

  • 태그 하나 추출

 soup.find("태그 이름") 또는 soup.태그이름 은 해당 태그를 가진 요소 중, 최상단에 있는 요소 하나만 추출해줍니다. 

 

print(soup.find('a'))

#또는 print(soup.a)

 

 

 

 

  • 태그 여러개 추출

 soup.find_all("태그 이름") 은 해당 태그를 가진 모든 요소를 배열 형태로 추출해줍니다. 

 

print(soup.find_all('a'))

 

 

 

 

  • 해당 태그의 클래스 이름으로 추출

 soup.find_all('태그 이름', '클래스 이름')은 해당 태그의 클래스 이름을 가진 요소를 추출해줍니다. 

 

 (find는 최상단 요소 하나만)

 

print(soup.find_all('a', 'gb1'))

 

 

 

 

 

 

  • 해당 태그의 아이디 이름으로 추출

 soup.find('태그이름', {'id' : '아이디 이름'}) 은 해당 태그의 아이디 이름으로 요소를 추출해줍니다. 

 

print(soup.find('img', {'id': 'hplogo'}))

 

 

 

 

  • 문서의 title 추출

 soup.title 은 해당 html 문서의 <title> 태그를 추출해줍니다. 

 

print(soup.title)

 

 

 

 추가적으로 soup.title.string 은 <title> 태그 내의 컨텐츠를 추출해줍니다. 

 

print(soup.title.string)

 

 

 

 

 

  • text 추출하기

 

 데이터.text는 find 또는 find_all로 찾은 태그의 컨텐츠를 추출해줍니다.

 

el = soup.find('div')
print(el.text)

 

반응형