본문 바로가기
카테고리 없음

selenium으로 웹 크롤링

by 스꼬맹이브로 2021. 3. 8.
728x90
반응형
SMALL

실시간으로 올라오는 데이터를 수집하기 위해 크롤링을 시작하기로..!

언어는 python을 사용했고 여러 개의 창으로 나뉘어 있어 반복해서 수집하되, 30초 간격으로 수집을 수행하였다.

 

from selenium import webdriver #웹크롤링을 수행해주는 놈!
from bs4 import BeautifulSoup #웹크롤링을 수행해주는 놈22!
import csv
import time
path="chromedriver.exe 설치 경로" #검색해서 파일 위치 열어서 그대로 복사! 없으면 다운받기!
page = ['A04','A01','A02','A03','A05','A06'] #창이 여러개인데 뒤에 숫자만 달라서 배열로 저장
pageName = ['a','b','c','d','e','f'] #파일명 지정
#options = webdriver.ChromeOptions() #8,9번 줄은 저장되는 것을 확인한 후에 창을 띄우지 않으려고 옵션 추가!
#options.add_argument("headless")
while(True):
    for i in range(len(page)): #여러 개의 창만큼 반복
        driver = webdriver.Chrome(path,options=options) #드라이버 생성
        f1 = open('D://practice/{}.csv'.format(pageName[i]), 'r', encoding='cp949') #전에 추가한 내용과 중복되는지 확인하려고 추가!(파일이 생성되어있지 않으면 에러 발생)
        line = f1.readlines()
        lines = list(map(lambda s: s.strip(), line)) #공백 제거
        line = [v for v in lines if v] #공백 제거
        if line != '\n':
            line = line[-1].split(",", 4) #4문장을 4개로 쪼갬(가끔 쉼표가 섞인 문장이 있어서 여러개로 쪼개짐을 방지)
        f1 = open('파일 저장 경로/{}.csv'.format(pageName[i]), 'a', encoding='cp949',newline="\n") #내용을 저장할 파일 오픈
        csvWriter = csv.writer(f1) 
        driver.get('크롤링 수행할 url주소 입력')
        html = driver.page_source
        soup = BeautifulSoup(html, 'html.parser')
        cl = soup.find('div', class_="지정된 클래스 이름").get_text().split("\n") #크롤링하고 싶은 문단 지정후 읽음
        cllist = list(filter(None, cl)) # 저장하기 쉽게 처리
        line[4]=line[4].replace("\"","")
        if line == cllist:
            print('{}아직진행중'.format(pageName[i])) # 잘 수행중인가 확인하기 위해서 그냥 써줌!
        else:
            csvWriter.writerow(cllist)
        f1.close()
        driver.close()
    time.sleep(30) #30초 쉬어가자!



어설프지만 크롤링은 잘됨! 

while문을 true로 지정해주었기때문에 직접 멈추기 전까지 계속 수행한다!

 

728x90
반응형
LIST