728x90
반응형
실시간으로 올라오는 데이터를 수집하기 위해 크롤링을 시작하기로..!
언어는 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