네이버 카페의 게시판에서 글번호, 제목, 작성자, 작성일을 크롤링하는 코드입니다.
링크 주소 복사
▪ 크롤링할 카페의 게시판으로 가서 첫번째 페이지의 링크 주소 복사
크롤링할 페이지 개수, URL 설정
page_num = 5 # 크롤링할 페이지 개수
url = "https://cafe.naver.com/ArticleList.nhn?search.clubid=21771779&search.menuid=56&search.boardtype=L&search.totalCount=151&search.cafeId=21771779&search.page="
driver.get(url+'1') # 크롤링할 페이지 열기
▪ page_num에서 크롤링할 페이지 개수를 지정 ex) 5로 지정했으면 1,2,3,4,5 페이지의 내용을 크롤링함
▪ url 부분에 복사한 링크 주소를 붙여 놓고 숫자 부분만 지움 ex) https://cafe.naver.com/ArticleList.nhn?search.clubid=21771779&search.menuid=56&search.boardtype=L&search.totalCount=151&search.cafeId=21771779&search.page=1 해당 url이 다음과 같으면 1만 지움
Code
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from bs4 import BeautifulSoup
import pandas as pd
driver = webdriver.Chrome()
page_num = 5 # 크롤링할 페이지 개수
url = "https://cafe.naver.com/ArticleList.nhn?search.clubid=21771779&search.menuid=56&search.boardtype=L&search.totalCount=151&search.cafeId=21771779&search.page="
driver.get(url+'1') # 크롤링할 페이지 열기
data_list = [] # 수집한 data를 저장할 list
for i in range(page_num):
next_url = url + str(i+1)
driver.get(next_url) # 다음 페이지로 이동
# 해당 page source 가져오기
driver.switch_to.frame('cafe_main')
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
# 필요한 data만 추출
text_num_list = soup.findAll("div",{"class":"inner_number"})
title_list = soup.findAll("a",{"class":"article"})
writer_list = soup.findAll("a",{"class":"m-tcol-c"})
date_list = soup.findAll("td",{"class":"td_date"})
for text_num, title, writer, date in zip(text_num_list, title_list, writer_list, date_list):
new_data = [text_num.text, title.text.strip(), writer.text, date.text] # text만 추출
data_list.append(new_data)
driver.close() # 페이지 닫기
# DataFrame으로 변환
col_names = ['글번호', '제목', '글쓴이', '작성일자']
df = pd.DataFrame(data_list, columns=col_names)
크롤링 결과
[참고]
'Language > Python' 카테고리의 다른 글
[Python] Django 투표 앱 만들기 (1) (1) | 2024.12.17 |
---|---|
[Python] Django 프로젝트 생성하기 (1) | 2024.12.17 |
[Python] 데이터프레임 합치기, 중복 행 제거 (0) | 2021.02.24 |
[Python] len()과 size()의 차이점 (0) | 2021.01.30 |
[Python] Numpy 모듈 정리(zeros ,random,argmax) (0) | 2021.01.28 |