본문 바로가기
크롤링

내맘대로 크롤링(4): 그래서 BeautifulSoup이 뭔데?

by 너티드코오딩 2023. 7. 10.

흐름상.. 앞파트에 나왔어야 할것 같지만^^;;

일단 쓰고싶은대로 쓴다~

 

우선 BeautifulSoup이 뭘까?

BeautifulSoup은 html의 코드를 추출하는 녀석 정도로 생각하면 좋다.

 

그러니까 어쨌든 크롤링을 하려고 하는 것이고, 이 과정에서 html구조에서 내용을 뽑아야하니까 BeautifulSoup을 쓴다.

정도로 이해하고 넘어갈 수 있다.

 

특히 내용을 정리하다보면서 정적수집, 동적수집 등의 내용을 확인했는데, 덧붙여 정리해보면 정적수집에서는 일반적으로 requests + BeautifulSoup 조합으로 한다.

requests로 html을 받아오고, 여기서 BeautifulSoup을 활용해서 파싱을 한다('html.parser')

대체로 네이버뉴스같은 사이트들.

 

동적사이트의 경우 Selenium을 활용해서 ChromeDriver를 활용한다.

어떻게 보면 이 과정이 매크로같달까? 로그인하거나 클릭 하는 매소드를 넣어서 원하는 페이지? 로 들어간 후

BeautifulSoup을 활용해서 크롤링을 할 수 있다.

 

내가 requestsSelenium을 모두 활용해본 결과 경험담을 정리하자면

 

requests

  • pagenumber 같은 것이 1, 11, 21, 31 이렇게 규칙적으로 넘어가고 url에 포함이 된다면 for 문을 돌려서 requests만으로도 충분히 크롤링할 수 있었다.
  • 이런경우 아주 빠르고 쉽게 할 수 있었다. 대표적으로 네이버 뉴스 검색과 제목, 본문 가져오기 등!

Selenium

  • 클릭을 해서 table을 변경했는데도 url에는 변경이 안되는 경우가 있다.
  • 이럴땐 Selenium과 ChromeDriver를 활용해서 약간 매크로처럼 크롬 띄워서 여기 들어가고, 클릭해~ 그리고 이거 눌러~ 그러면 이 페이지를 불러올꺼야~ 하고 크롤링을 할 수 있었다.
  • 내용을 찾아보니 Selenium이 조금 더 시간이 걸린다고 했고, 실제로도 조금 더 걸렸던 듯? 2022년 전체 데이터를 가져오는데 한 20분..정도? 물론 browser.quit()과 time.sleep(10)을 활용하긴 했당
  • 근데 이거 매소드 클릭, 입력 등등 넣을 수 있어서 아주 재밌어

근데 나는 생각해보니까 크롤링할때

Selenium과 BeautifulSoup의 조합으로 했던것 같구만..

 

뭐든 크롤링만 되면 되는거 아니겠어ㅎㅎ