네이버 카페 크롤링

셀레니움 이용하여 네이버 카페 크롤링을 해보자

아래 그림과 동일한 페이지에서 타이틀과 작게 보이는 글 내용만 크롤링할 것이다.

※ 게시글의 전체적인 내용은 카페 회원가입을 해야지만 가능하다.

정의

# Web Crawling from fandom with Selenium
from bs4 import BeautifulSoup as bs # 17 line
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.keys import Keys
import time
import pandas as pd
from googleapiclient.discovery import build # 88 line
import warnings # 경고창 무시
warnings.filterwarnings('ignore')

# 셀레니움 옵션 설정
options = webdriver.ChromeOptions()
# options.add_argument('headless') # 크롬 띄우는 창 없애기
options.add_argument('window-size=1920x1080') # 크롬드라이버 창크기
options.add_argument("disable-gpu") #그래픽 성능 낮춰서 크롤링 성능 쪼금 높이기
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36") # 네트워크 설정
options.add_argument("lang=ko_KR") # 사이트 주언어
options.add_argument('disable-infobars')
options.add_argument('--disable-extensions')
options.add_argument('--mute-audio')
options.add_argument('--blink-settings=imagesEnabled-false')
options.add_argument('incognito')

driver = webdriver.Chrome('C:/Users/opqrs/Desktop/selenium/chromedriver.exe',options=options)

        
j=1; link=[]; title=[]; content=[];
while j: 
    source = driver.page_source
    soup = bs(source,'html.parser')
    items = soup.find_all(class_='article_item')
    
    for i in range(len(items)): 
        # link.append([items[i]['href']])  # 링크
        title.append(' '.join(re.compile('[가-힣]+').findall(str(items[i].find(class_='item_subject'))))) # 타이틀
        content.append(' '.join(re.compile('[가-힣]+').findall(str(items[i].find(class_='item_content'))))) # 내용
    driver.find_element(By.LINK_TEXT, str(j)).click()
    j += 1
    
    
title = pd.DataFrame(title)    
content= pd.DataFrame(content)    
df = pd.concat([title,content],axis=1)
df.to_csv('ggg.csv', encoding='euc-kr')  

결과

크롤링 결과는 아래와 같다. 정의

Leave a comment