programming/Python

[BeautifulSoup]웹크롤링 하기

worldint 2022. 11. 17. 17:10

BeautifulSoup은 파이썬 라이브러리로 html이나 xml을 꺼내와 파이썬에서 다룰수있게해준다.

requests패키지와 함꺠사용하여 'requests'로는 웹에서 html을 가져오고

그 가져온 html을 파이썬에서 이리저리 주무룰 수 있게해주는게 'BeautifulSoup'이다

본 블로그의 [항해99:사전교육]에(https://hwansci.tistory.com/17)긱본적인 사용법을 기재해놨다.

 

BeautifulSoup에서 주로쓰는 메소드는 'select()', 'select_one()', 'find()', 'decompose()' 이정도 인거 같다

 

 

1.select(),select_one()

select()는 html에서 태그의 'id'나'class'같은 'selector'를 기준으로 해당 태그를 찾아준다.

#soup에는 이미 html들어있다고 갸장하고 아래와 같이 사용하면 post라는 'id'를 가진 태그를 찾아준다
soup.select("#post")

#아래는 post라는 id를가진 태그안의 class가 new-list인 태그를 찾아준다
soup.select("#post > div.new-list")

select()는 전부다 찾아주고 ,select_one()은 가장 위에있는 하나를 찾아준다.

select()로하면 리턴 객체가 ResultSet이되고 select_one()을하면 tag객체를 리턴해준다

 

 

 

2.find()

find()는 html 문서에서 원하는태그를 찾아주는것인데 select와 사용법만다르고 비슷한거같다

얘도 tag객체를 리턴해준다

#이련식으로 쓰는데 select보다 불편한거같기도하다.
trs = soup.find(id='body-content')


#자식태그를 찾으려면 아래와같이 해야하는거 같다

trs = soup.find(id='body-content').find('a') 
#id가 body-content인 태그를 찾고 그 html에서 a태그를 찾아라

3.decompose()

찾은 태그를 지워주는 메소드이다

# trs가 <h1>안녕<span>하세요</span></h1>일때, decompose()를 하게되면<h1>안녕</h1>이렇게 바뀐다
trs.find('span').decompose()