본문 바로가기
AI SCHOOL/TIL

[DAY 18] BeautifulSoup 태그 찾기 방법 3가지, 매직 커맨드, 시리즈를 list로 변경, map, apply

2023. 1. 18.

BeautifulSoup로 같은 문서에 같은 텍스트를 찾아도 여러 방식으로 작성할 수 있다는 것을 알게 되었다.

시간을 측정하는 매직 커맨드와 시리즈 다루기, 판다스의 메소드 등을 공부했다.

BeautifulSoup 메소드 3가지

만약 어떤 BeautifulSoup 객체 soup에서 class가 sample인 div 태그를 찾는다고 한다면, 그 태그의 텍스트는 아래와 같은 방법으로 추출할 수 있다.
1. soup.select("div.sample")[0].text
2. soup.find('div', {'class':'sample'}.text
3. soup.find_all('div', {'class':'sample'}[0].text

매직 커맨드(Magic Commands)

Ipython 환경에서 %기호로 시작하는 명령을 매직 커맨드라고 한다.
본 글에서는 시간 측정 커맨드를 소개한다.
1. %time : 명령어 뒤의 한 줄 코드를 실행시 걸리는 시간 반환
2. %timeit : time + iteration 개념으로, 정확도 향상을 위해 명령어 뒤의 한 줄 코드를 여러 번 실행하고 걸리는 평균 시간을 측정하여 반환
3. %%time : 셀 전체에 대해 코드 실행시 걸리는 시간 반환
4. %%timeit : 셀 전체에 대해 코드 실행을 여러 번 하고 걸리는 평균 시간을 측정하여 반환
% 하나로 시작하면 라인에 적용, % 두개로 시작하면 셀에 적용되는 것이다.

summation
매직 커맨드 사용


위에서 언급한 BeautifulSoup의 메소드 select, find, find_all에 대해서 실행 시간을 측정한 결과

macom

find -> find_all -> select 순으로 빠른 것을 알 수 있었다.

map, apply, tqdm

map는 Series에, apply는 DataFrame과 Series에 사용하는 pandas의 메소드이다. 반복문 대신 사용할 수 있고 반복문을 사용할 때에 비해 속도가 빠르다.
그러나 많은 작업을 할 때는 어느정도 진행되었는지 체크가 안 된다. 그래서 tqdm의 도움을 받는 것이다.
progress_map과 progress_apply는 tqdm에서 pandas를 지원하는 기능으로, 진행 상황을 표시해준다.

tolist()와 to_list의 차이

둘 다 pandas의 메소드로, 시리즈를 리스트로 변환할 때 사용한다.
과거 tolist()만 사용했는데 pandas 0.24.0에 to_list()가 생긴 것이다.
pandas 버전에 따라 to_list()가 동작하지 않을 수도 있다.

 

반응형

댓글