셀레늄으로 웹 크롤링 중 IF문 사용하고나서 데이터 저장이 제대로 안됩니다.
조회수 1357회
IF Else 구문으로 '셀러회원'이 나오면 다음글 클릭하고 아니면 데이터 수집하라는 명령을 쳤는데 데이터를 수집하면 1줄의 데이터만 저장이 되네요. 여러 데이터를 쌓아올리는 수정이 필요해 보입니다. 부탁드립니다.
for i in range(1, total_pages):
#크롤링 시작
print('[',i,'/', total_pages,']')
# 회원등급
cont_level = driver.find_element_by_class_name('nick_level').text
if cont_level == '◆셀러회원◆' :
pass
driver.find_element_by_link_text('다음글').click()
time.sleep(1)
else :
#회원등급(셀러회원제외)
cont_levels = driver.find_element_by_class_name('nick_level').text
try:
# 게시물 URL
cont_url = driver.find_element_by_xpath('//*[@id="spiButton"]').get_attribute('data-url')
# 게시물 번호
cont_id = cont_url.split('/')[-1]
# 게시물 작성일
cont_date = driver.find_element_by_class_name('date').text
print(cont_id,' ',cont_date)
# 게시물 작성자
cont_author = driver.find_element_by_class_name('nick_box').text
except Exception as error: # 로딩 실패시 재시도
print(error)
time.sleep(delay)
pass
# 상품상태 / 결제방법 / 배송바법 / 거래지역
try:
cont_detail = driver.find_element_by_class_name('section').text
except NosuchElementException:
pass
#댓글수
try: review_count = driver.find_element_by_class_name('num').text
except : review_count = ""
# 판매 상태 정보
try:
status = driver.find_element_by_css_selector('.SaleLabel').text
except:
status = ""
# 게시물 가격
try:
cont_price = driver.find_element_by_class_name('cost').text
cont_price = cont_price.replace('원','')
cont_price = cont_price.replace(',','')
except: # 가격이 없는 글이면 크롤링 부적절(이 경우 DB에 저장하지 않고 넘어감)
print(cont_id, 'is invalid article')
cont_id=None
pass
if cont_id != None:
# 게시물 제목
cont_title = driver.find_element_by_class_name('title_text').text
# 게시물 내용
try: # 본문이 se-main-container 타입인 경우
cont_explanation = driver.find_element_by_class_name('se-main-container').text
except NoSuchElementException: # 본문이 ContentRenderer 타입인 경우
cont_explanation = driver.find_element_by_class_name('ContentRenderer').text
except Exception as error: # 로딩 실패시 재시도
print(error)
pass
# 판매자 연락처 / 이메일
driver.find_element_by_css_selector('button.btn_text').click()
cont_seller = driver.find_element_by_class_name('contact_box').text
results= []
data = [cont_url, cont_id ,cont_date, cont_author, cont_price, cont_title, cont_explanation, cont_seller, cont_levels, review_count,
cont_detail] #게시물 1개씩 저장
results.append(data)
driver.find_element_by_link_text('다음글').click()
time.sleep(3)
댓글 입력