본문 바로가기
혼자공부

python - beautifulsoup 라이브러리 활용하여 웹크롤링하기!

by 쁑쁑쓰 2022. 9. 23.
728x90
반응형

Beautifulsoup 라이브러리를 활용하여 파이썬 웹크롤링하기

 

 

요즘 네이버 블로그 포스팅의 경우 마우스 드래그, 우클릭이 금지되어있다.

즉, 저 내용을 내 마음대로 복사할 수 없다는 뜻이다.

하지만 파이썬 beautifulSoup 라이브러리를 활용하여 크롤링하면 내용을 충분히 가져올 수 있다.

 

.

.

.

 

1. 사이트 정보를 가져오기위해서는 "requests" 라이브러리를 사용한다. 해당 라이브러리를 사용하기 전에

설치를 꼭! 해주어야한다.   requests - http 호출을 하기 위한 파이썬 모듈

 

 

설치 후 라이브러리를 import 한다.

 

2. requests 함수를 이용하여 내가 원하는 블로그 주소를 불러온다.

그리고 블로그의 내용을 text 화 한다. 아래의 내용 중 필요한 내용만 뽑아 사용하면 되지만

사용하기에는 지저분한 자료이다. 

 

 

3. beautifulsoap4 모듈을 설치하고 import 한다.

beautifulsoap4 - HTML의 특정한 element를 가져오기 위해 필요한 모듈 / scraping 하면 떠오르는 핵심 모듈이다.

 

 

BeautifulSoup 사용 방법은 다음과 같다.

BeautifulSoup(html 응답, 형식)

여기서 html 응답 -> req.text 이고 형식 -> html.parser 이다.

 

BeautifulSoup를 soup라는 변수에 담아 편리하게 사용한다.

 

 

4. soup를 print를 해보면 결과가 req.text 보다 더 깔끔하게 나오는 것을 확인할 수 있다.

그래서 자료를 뽑기 위해 활용할 자료는 print(soup)로 정했다.

 

5. 크롤링할 요소(태그) 찾기

우리가 원하는 것은 html 문서가 아니라 안에 있는 특정 element이다.

그러기 위해서는 html 문서 상에서 어떠한 형태를 하고 있는지 확인해보면 된다.

 

 

실제로 내가 뽑고 싶은 내용은 단어와 단어의 뜻이다.

이 단어들이 어떤 태그로 구성되어 있는지 확인을 해보니

<span> 가온누리 : 어떠한 일이있어도 세상의 중심이되리라 </span>

즉, span이라는 태그로 되어있다.

 

6. 크롤링을 해본다.

find를 활용하여 찾아보니 "블로그"라는 결과 값이 나온다.

이것은 찾을려고 하는 내용이 아니다.

 

 

여기에 만족하지 않고 find_all 을 사용하여 웹페이지 내에 모든 태그를 찾는다.

 

알고보니 처음에 찾은 span은 네이버 마크를 의미하는 단어였다.

 

 

html 문서의 구조를 다시 한 번 확인한다.

확인해보니 단어 목록을 감싸고 있는 전체 태그는 tbody 이다. 그리고 각 단어는 span 태그로 되어있다.

 

 

tbody 태그 내용을 보니 안에 내가 찾고자 하는 단어를 발견할 수 있었다.

 

 

즉, tbody > span이라는 태그를 찾으면 되므로

soup.find("tbody").find_all("span")하여 내용을 효과적으로 찾아낼 수 있다.

 

그러나 아직 사용하기에는 지저분한 자료이다.

내가 원하는 것은 안에 있는 text 자료이다. 이것을 text 화 해본다.

 

 

사용하기 편하도록 soup.find("tbody").find_all("span") 를 span_list 변수에 담는다.

 

 

span 항목을 span_list에 담아 text 화 한다.

 

 

span_list2 변수에 리스트로 만들어서 span.text화하여 span_list를 담는다.

 

 

나는 안에 있는 단어와 뜻만을 추출하고 싶다.

"예쁜 한국말! 예쁜 뜻이 담긴 순수 한국말" 은 빼고 싶기 때문에 del을 활용하여 0번째 컬럼을 삭제한다.

 

 

그리고 문자열 안에 있는 숫자를 지우고 싶다. 확인해보니 245번이 마지막 번호이다.

그래서 4글자 이상일 때만 리스트에 포함시키도록 코드를 작성한다.

 

 

크롤링한 내용을 txt 파일로 저장한다.

저장할 때에는 "\n"을 더해 한줄 한줄 나오도록 한다.

 

 

아직 허접한 크롤링 기술이지만.. 앞으로 열심히 공부해야겠다.

 

참고 블로그 및 블로그

https://blog.naver.com/jsk6824/221964251302

 

초보자용 파이썬 웹 크롤링 Beautifulsoup !!

▲크롤링이 처음인 초보자들에게 파이썬 Beautifulsoup을 권해드립니다 Full 영상 안녕하세요!! 이번 포...

blog.naver.com

 

728x90
반응형