html 스크래핑은 언제나 할 수 있을까? (beautifulsoup으로 카카오맵리뷰 크롤링)

도리·2025년 1월 23일
0

크롤링

목록 보기
5/6

목적 : 카카오맵 리뷰 크롤링

  • 카카오맵 API 에는 음식점 메뉴 정보, 가까운역, 카테고리, 최신리뷰, 영업시간, 평점을 제공하지 않는다.
  • 그러나 카카오맵 리뷰를 한번 크롤링해보고싶어...

1. html스크래핑 사용하자

단순히 page의 URL주소를 활용, request로 받아와서 soup으로 파싱한 후 tag을 선택하여 데이터 가져오자.

  • requests.get()
    requests.get(url) 후 찍어보니 200으로 잘 응답하는 것을 알 수 있다.
    *.content
  • 웹서버의 응답을 문자열로 가져온다.
    *BeautifulSoup(page,'html.parser')
  • DOM화 하여 파싱하게 좋게 만든다.

근데 아무리봐도 body부분에 파싱할 내용이 없다....
" 실패 "

웹이 '비동기통신'하는 경우는 Html스크래핑을 할 수 없다.

2. Fetch API 을 이용하자

  • Network - Fetch/XHR에 나타나는 데이터를 사용했다.

  • 웹브라우저에서 실행되는 비동기 요청 ( Fetch API ) 즉, 브라우저가 서버와 통신해서 가져온 데이터를 활용하는 것이다.

  • 이때 page는 json파일로 받아올 수 있다. ( Html 스크래이핑은 content로 받아와서 soup으로 파싱한 것과 조금 다름)

여러 정보들 중 필요한 리뷰정보가 불러와지는 것을 알 수 있다.
이때 필요한 index를 골라 추출하여 df 파일로 불러오면 된다.

* 웹이 '비동기통신'을 하면 html스크래핑을 할 수 없다?

사실 selenium 같은 라이브러리 사용하면 됨.

html 스크래핑

  • html 소스만을 가져온다.
  • JS에 의해 동적으로 로드되는 데이터가 포함되지 않는다.!

selenium

  • selenium을 사용하면 js가 실행된 이후의 웹페이지를 스크래핑해서 사용할 수 있으므로 , 동적크롤링이 가능하다.

하지만 우리는 selenium없이 웹스크래핑을 해보기로 했다.
이는 브라우저 개발자도구에서 처리된 Fetch/XHR 데이터를 직접 참고하여 코딩하여 할 수 있었다.

profile
인공지능응용학과 졸업예정..

0개의 댓글