그로스 마케팅/학습 기록

웹 크롤링이란? | 마케터를 위한 Python 웹 크롤링 기초 #2 [멋쟁이사자처럼 부트캠프 그로스 마케팅 5기 day 16]

shushu26 2026. 6. 7. 16:59

웹 크롤링으로 데이터를 열심히 수집했다면, 이제 가장 중요한 단계가 남았습니다.

바로 수집한 데이터를 엑셀처럼 깔끔한 표(DataFrame) 형태로 만드는 것이죠!

오늘은 데이터를 묶고 표로 변환하는 과정을 한 줄씩  정리해 보겠습니다.


1. 딕셔너리 만들기 (데이터 묶기)

따로 놀고 있는 데이터들을 표로 만들기 전에, 하나로 예쁘게 묶어주는 과정이 필요합니다.

이때 사용하는 것이 바로 '딕셔너리(Dictionary)'입니다.

 

melon_dic = {"노래제목": titles_list, "가수명": artists_list}

 

  • 딕셔너리란? 나만의 '사전'이나 '이름표가 붙은 사물함'을 만드는 것과 같습니다.
  • 기본 문법: 변수명 = { "이름표1": 데이터1, "이름표2": 데이터2 }
  • 원리: 이름표(KEY)를 입력하면 그에 연결된 실제 데이터(VALUE)를 바로 꺼내 쓸 수 있도록 쌍으로 묶어주는 방법입니다.
  • 이유: 컴퓨터에게 *"이 데이터 뭉치는 '노래제목'이고, 이 데이터 뭉치는 '가수명'이야!"*라고 명확한 가이드라인을 주기 위해 사용합니다.

2. 데이터프레임 변환하기 (표 만들기)

이제 판다스(Pandas) 라이브러리를 사용해 본격적으로 엑셀 같은 표를 만들어 보겠습니다.

코드는 단 3줄이면 충분합니다.

 

melon_df = pd.DataFrame(melon_dic, index=range(1, 101))
melon_df.index.name = "순위"
melon_df

 

 

이 3줄의 코드가 어떻게 작동하는지 단 한 글자도 놓치지 않고 쪼개서 알려드릴게요!

 

① 첫 번째 줄 코드 뜯어보기

melon_df = pd.DataFrame(melon_dic, index=range(1, 101))

 

  • pd. * "판다스 도구함에 있는 기능을 쓰겠다"는 신호입니다. (Pandas를 코딩할 때 짧게 pd라고 부릅니다.)
  • DataFrame( ... ) * "엑셀 같은 표를 만들어라!"라는 명령어입니다. (주의: 대문자 D와 F를 정확히 써야 합니다!)
  • melon_dic * "표에 들어갈 알맹이 데이터는 이거야."라는 뜻으로, 위에서 만든 딕셔너리를 재료로 넣어준 것입니다.
  • index=range(1, 101) * "왼쪽 줄 번호(인덱스)는 1부터 100까지로 지정해줘!"라는 뜻입니다.
  • melon_df = * "이렇게 완성된 예쁜 표를 melon_df라는 변수(상자)에 저장해라!"라는 의미입니다.

② 두 번째 줄 코드 뜯어보기

melon_df.index.name = "순위"

 


줄 번호(1, 2, 3...)만 있으면 이게 순위인지, 학번인지 컴퓨터는 모릅니다. 그래서 줄 번호 위에 이름을 달아주는 코드입니다.

  • melon_df : 위에서 우리가 만든 표 상자를 가져옵니다.
  • .index : 점(.)은 '~의'라는 뜻입니다. 즉, "melon_df 표 왼쪽 줄 번호(인덱스)"를 뜻합니다.
  • .name : 또 점(.)이 붙었죠? "왼쪽 줄 번호 이름"을 뜻합니다.
  • = "순위" : 그 이름을 "순위"라는 글자로 정해주겠다는 뜻입니다.

세 번째 줄 코드 뜯어보기

melon_df

 

 

"지금까지 열심히 만든 melon_df 표를 화면에 띄워서 나한테 보여줘!"라는 명령입니다

3. 데이터 프레임 파일로 저장하기

 

컴퓨터에 파일로 저장해두면 나중에 분석하거나 보고서 쓸 때 편리합니다.

 

# to_csv: 코드로 작성된 DF를 csv파일로 내보내는 함수 (csv외에 다른 확장자명도 일부 사용가능)
melon_df.to_csv("data/멜론차트Top100.csv", encoding="utf-8")

 


 

지금까지 데이터 프레임 만드는 법을 알아보았고 다음 내용은 i-frame과 웹 크롤랑 응용 버전에 대해서 알아보도록 하겠습니다

1. iframe 태그란?

iframe(Inline Frame)은 현재 웹 페이지 내에 독립적인 작은 창을 만들어,

다른 서버의 웹 페이지나 리소스(데이터)를 삽입해 보여주는 HTML 태그입니다.
( 개발자 도구에서 Ctrl + F을 통해 쉽게 찾을 수 있으며

 iframe 태그 밑에 #document 쪽에 있는 url을 우클릭해서 링크 복사 )

 

2. 왜 사용할까? (주요 장점)

  • 자원 절약 및 속도 개선:  iframe을 사용하면 특정 영역의 데이터만 부분적으로 로드하고 관리할 수 있어 성능을 높입니다.
  • 독립적 데이터 관리: 쇼핑몰의 리뷰 데이터댓글 영역처럼, 메인 페이지와 분리하여 따로 관리해야 하는 대용량 데이터를 처리할 때 매우 유용합니다.

3. ⚠️ 크롤링 및 개발 시 주의사항⚠️

  • iframe으로 렌더링된 데이터는 메인 웹 페이지의 기존 URL이나 DOM 구조로 직접 접근할 수 없습니다.
  • 해당 데이터를 수집하거나 확인하려면, iframe이 가리키고 있는 원천 서버의 실제 주소(src 경로)로 직접 접근해야 합니다.



웹 크롤링 응용
 

* 1~10페이지의 데이터를 모두 수집하고 싶을때 *

#tqdm:반복문의 진행상황을 로딩바로 확인하게 해주는 함수
from tqdm import tqdm

# 빈 바구니 리스트 생성
name_list, people_list, number_list = [], [], []

# # 1. 바깥쪽 for문 변수: i (페이지 번호 1~10)
for i in tqdm(range(1, 11, 1)) :
    url = f"https://www.10000recipe.com/recipe/list.html?order=reco&page={i}"
    res = req.get(url, headers=U_A)
    soup = bs(res.text, "lxml")

    # 원하셨던 첫 번째 변수명 구조 그대로 들여쓰기 안쪽으로 배치합니다.
    name = soup.select("div.common_sp_caption_tit.line2")
    people = soup.select("div.common_sp_caption_rv_name > a")
    number = soup.select("span.common_sp_caption_buyer")

    # # 2. 안쪽 for문 변수도 i로 사용! (0~39번째 데이터 인덱스)
    for i in range(len(name)) :
        # 꺼내올 때와 담을 때 모두 i로 똑같이 맞춰줍니다.
        name_list.append(name[i].text.strip())
        people_list.append(people[i].text.strip())
        number_list.append(number[i].text.strip()[4:])

# # 데이터프레임 제작
finance_dic = {"레시피명": name_list, "작성자": people_list, "조회수": number_list}
finance_df = pd.DataFrame(finance_dic, index=range(1, len(name_list) + 1))
finance_df.index.name = "No"

# 최종 결과 확인
finance_df

 


* 특정 키워드가 들어간 부분만 필터링하고 싶을때
 *

# 레시피명 컬럼에서 '김치'가 포함된 행만 필터링
# str.contains: DF에서 특정 문자가 포함된 행 찾기
filtered_df = finance_df[finance_df["레시피명"].str.contains("김치")]

# reset_index: 인덱스 번호 재설정
# drop=True: 기존 인덱스 컬럼 삭제
filtered_df.reset_index(drop=True, inplace=True)
filtered_df.index=range(1, len(filtered_df)+1)
filtered_df.index.name="No"
filtered_df

 


마무리 

오늘 실습을 통해 느낀 점은
데이터 분석의 시작은 분석이 아니라 데이터 확보라는 점입니다.

그동안 SQL과 Pandas를 활용해
주어진 데이터를 조회하고 가공하는 방법을 배웠다면,

웹 크롤링은 필요한 데이터를 직접 수집할 수 있게 만드는 기술이었습니다.

앞으로는 단순히 데이터를 보는 것을 넘어,
채용공고나 경쟁사 데이터를 직접 수집하고 분석하며
실제 마케팅 의사결정에 활용해보고 싶습니다.

 

🦁 데이터로 증명하는 그로스 마케터가 되고 싶다면?

 

🦁 내 성장의 기회, 멋쟁이사자처럼

데이터 분석부터 마케팅 자동화까지, 현업 중심 실무 역량 강화

나에게 맞는 실무 커리큘럼 확인하기 →