제로베이스 데이터 취업 스쿨 4주차 스터디노트 7호
대체 왜 BeautifulSoup일까?
저번에 Seaborn도 그렇고...
얘네들은 웃긴게 이름 힙하게 지어놓고
왜 그런 이름을 지었는지 설명하는 내용이 없다.(찾아봄)
참고 >>> 공식문서
soup = BeautifulSoup(html, "html.parser")
soup.a # a 태그인 element를 찾아줌.
"html.parser"
argument
이 argument를 변경함에 따라 파싱 시 사용되는 프로그램이 달라진다.
사용할 수 있는 옵션은 "lxml"
, "lxml-xml"
, "html5lib"
이다.
두가지 lxml은 C로 작성된 프로그램을 활용한다.
매우 빠르지만, 추가적인 라이브러리 설치를 요구한다.
html5lib은 제일 html스러운 방식이다.
웹 브라우저가 동작하는 방식대로 동작한다고 한다. 느린게 흠.
tag가 attribute가 됨
soup.a
로 실행이 된다는 것은
soup가 이미 파싱된 상태로 제공된다는 것이다.
그러니까 대충 써보면 이런 식일 것이다.
class BeautifulSoap:
def __init__(self, raw_xml, type):
self.a = self.__find_anchor(raw_xml) # find a tags
self.p = self.__find_paragraph(raw_xml)
def __find_anchor(raw_xml):
# find anchor
def __find_paragraph(raw_xml):
# find paragraph
또한, find_all
와 select
가 있다.
이 둘의 차이는 select
의 경우 CSS Selector을 사용한다는 것이다.
반면, find_all
는 BeautifulSoup 내부에서 정의된 pararmeter을 받는다.