Dorulog
article thumbnail
반응형

안녕하세요. 오늘은 파이썬을 활용해서 네이버 웹툰 사이트를 웹크롤링 하는 방법을 알아보겠습니다.

웹크롤링 단계

사실 웹크롤링은 웹페이지의 가져와서 데이터를 추출해 내는 것인데요.

나무위키에 따르면 아래와 같다고 합니다.

크롤링(crawling) 혹은 스크레이핑(scraping)은 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위다. 크롤링하는 소프트웨어는 크롤러(crawler)라고 부른다.

 저와 같은 초보일수록 기초적인 실수를 안하려면 단계를 정하고

그에 따라서 코딩하는 것이 시행착오를 줄일 수 있습니다. 저는 일반적으로

  1. 크롤링하려는 페이지 구조확인 및 크롤링하고자 하는 위치파악
  2. 코딩 및 필요한 내용 구글링
  3. 테스트 및 디버깅

위와 같은 순서로 짜고 있는데요.

이에 따라서 포스팅 해보겠습니다.

크롤링 페이지 구조 확인 및 위치파악

먼저 오늘 크롤링하려고 하는 네이버 웹툰 페이지를 확인해봅니다.

크롬의 F12에서 나오는 개발자 도구로 진행할 예정입니다.

저는 요일별 웹툰 리스트를 크롤링 해보려고 하는데요.

아래처럼 div 아래에 col_inner로 묶여 있음을 알 수 있습니다.

그리고 이 내용을 긁어오는 건 파이선의 beautifulsoup4를 통해서 할것인데요.

www.crummy.com/software/BeautifulSoup/bs4/doc/

 

Beautiful Soup Documentation — Beautiful Soup 4.9.0 documentation

Non-pretty printing If you just want a string, with no fancy formatting, you can call str() on a BeautifulSoup object (unicode() in Python 2), or on a Tag within it: str(soup) # ' I linked to example.com ' str(soup.a) # ' I linked to example.com ' The str(

www.crummy.com

Document를 통해서 find_all 또는 select를 통해서 원하는 내용을 선택할 수 있습니다.

코딩하기

import requests
from bs4 import BeautifulSoup

wt_url = 'https://comic.naver.com/webtoon/weekday.nhn'

response = requests.get(wt_url)

soup = BeautifulSoup(response.text, 'html.parser')

raw_title_list = soup.select('a.title')  #title칸의 값 모두 긁어오기

title_list = []
i= 1

for a in raw_title_list:         #타이틀 전체를 불러와서 정렬
    a_href = a.get('href')[-3:] #주소에서 마지막 3자리가 요일
    a_text = a.get_text()   #제목파일 가져옴
    if a_href == 'tue':       #요일에 맞춰서 동작
        result = f'{i:2d}위 {a_text}'
        title_list.append(result)
        i+=1
    else:           #예외조건 실행
        continue
    
print('\n'.join(title_list))

전체코드는 위와 같습니다.

제목은 a.title로 불러왔구요. select를 통해서 선택했습니다.

요일 소스는  a href에 마지막 3자리가 mon임을 활용해서 작성했습니다.

    a_href = a.get('href')[-3:] #주소에서 마지막 3자리가 요일

그래서 if 문으로 특정요일일때만 동작하도록 만들어 놨구요. 

코드 실행 테스트

실제 실행하면 정상적으로 동작함을 알 수 있습니다.

요일을 바꿔가면서도 테스트 해봅니다.

아래 사이트에서도 잘 설명해놨기 때문에 참고하셔서 스크랩하시면 될것 같습니다.

아래 3곳의 사이트를 참고하여 만들었습니다.

wikidocs.net/35948

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

smorning.tistory.com/331

 

BeautifulSoup, find와 select 를 사용한 웹 크롤링

파이썬을 배우고 몇 번 웹 스크레핑 (웹 크롤링)을 해보니 웹 스크레핑의 기본 프로세스는 대개 정해진 패턴이 있다는 것을 알게 되었습니다. 따지고 보면 웹 스크레핑이라는 것은 웹페이지에서

smorning.tistory.com

네이버 웹툰 크롤링 프로젝트 (velog.io)

 

네이버 웹툰 크롤링 프로젝트

requests와 BeautifulSoup을 이용해서 네이버 웹툰 메인 페이지에 존재하는, 모든 웹툰의 제목과 링크를 크롤링합니다.

velog.io

 

728x90
profile

Dorulog

@dorudoru

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!