파이썬 프로젝트

[파이썬 프로젝트] 잡플래닛 리뷰 정보 크롤링 코드 공유

손생 2021. 3. 29. 23:47
반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 


오늘은 제가 개인적으로 쓸 일이 있어서 진행한 웹크롤링 프로젝트를 공유하겠습니다.

 

참고로 이 코드를 이용하려면 잡플래닛 계정이 있고, 회사 리뷰를 최소 1개 작성해야 합니다. 리뷰를 작성해야지, 모든 리뷰가 조회 가능하거든요.

 

필요하신 분들은 마음껏 사용하세요.

 

[2022.09.26 수정]  저장되는 엑셀 파일명에 회사명 추가 / 크롤링 되는 정보에 회사명 컬럼 추가

 

# step1.프로젝트에 필요한 패키지 불러오기
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import pandas as pd

# step2.로그인 정보 및 검색할 회사 미리 정의, 해당 회사의 리뷰 끝 페이지도 정의
usr = "잡플래닛 아이디(메일주소)"
pwd = "잡플래닛 비밀번호"
query = "검색할 회사"
page = 검색할 회사의 마지막 페이지   #정수


# step3.크롬드라이버 실행 및 잡플래닛 로그인

driver = webdriver.Chrome("C:/Users/username/Desktop/chromedriver.exe")

driver.get("https://www.jobplanet.co.kr/users/sign_in?_nav=gb")
time.sleep(5)

login_id = driver.find_element_by_css_selector("input#user_email")
login_id.send_keys(usr)

login_pwd = driver.find_element_by_css_selector("input#user_password")
login_pwd.send_keys(pwd)

login_id.send_keys(Keys.RETURN)
time.sleep(5)


# step4.원하는 회사의 리뷰 페이지까지 이동
search_query = driver.find_element_by_css_selector("input#search_bar_search_query")
search_query.send_keys(query)
search_query.send_keys(Keys.RETURN)
time.sleep(3)

driver.find_element_by_css_selector("a.tit").click()
time.sleep(15)

driver.find_element_by_css_selector("button.btn_close_x_ty1 ").click()
time.sleep(3)



# step6.크롤링한 정보를 담을 리스트명 정의
list_company = []
list_div = []
list_cur = []
list_date =[]
list_stars = []
list_summery = []
list_merit = []
list_disadvantages = []
list_managers =[]


# step7.원하는 회사의 직무/근속여부/일시/요약/평점/장점/단점/경영진에게 바라는 점 크롤링 (for문으로 반복)
for i in range(page): 

    #직무, 근속여부, 일시
    user_info = driver.find_elements_by_css_selector("span.txt1")

    count = int(len(user_info)/4)
    print(count)
    
    for j in range(count):
    list_company.append(query)

    list_user_info = []

    for j in user_info:
        list_user_info.append(j.text)

    for j in range(count):            #한 페이지에 정보 5set씩 나옴. 마지막 페이지는 5개 미만일 수 있으므로 count 변수를 반복횟수로 넣어줌.
        a = list_user_info[4*j]
        list_div.append(a)
        
        b = list_user_info[4*j+1]
        list_cur.append(b)

        c = list_user_info[4*j+3]
        list_date.append(c)

    #별점
    stars = driver.find_elements_by_css_selector("div.star_score")
    for j in stars:
        a = j.get_attribute('style')
        if a[7:9] == '20':
            list_stars.append("1점")
        elif a[7:9] == '40':
            list_stars.append("2점")
        elif a[7:9] == '60':
            list_stars.append("3점")
        elif a[7:9] == '80':
            list_stars.append("4점")
        else:
            list_stars.append("5점")
        
    #요약 정보
    summery = driver.find_elements_by_css_selector("h2.us_label")

    for j in summery:
        list_summery.append(j.text)
    
    #장점, 단점, 경영진에게 바라는 점
    list_review = []

    review = driver.find_elements_by_css_selector("dd.df1")

    for j in review:
        list_review.append(j.text)

    for j in range(count):            #한 페이지에 정보 5set씩 나옴. 마지막 페이지는 5개 미만일 수 있으므로 count 변수를 반복횟수로 넣어줌.
        a = list_review[3*j]
        list_merit.append(a)
        
        b = list_review[3*j+1]
        list_disadvantages.append(b)

        c = list_review[3*j+2]
        list_managers.append(c)

    # 다음 페이지 클릭 후 for문 진행, 끝 페이지에서 다음 페이지 클릭 안되는 것 대비해서 예외처리 구문 추가
    try:
        driver.find_element_by_css_selector("a.btn_pgnext").click()
        time.sleep(15)
    except:
        pass


# step8.pandas 라이브러리로 표 만들기
total_data = pd.DataFrame()
total_data['회사'] = pd.Series(list_company)
total_data['날짜'] = pd.Series(list_date)
total_data['직무'] = pd.Series(list_div)
total_data['재직여부'] = pd.Series(list_cur)
total_data['별점'] = pd.Series(list_stars)
total_data['요약'] = pd.Series(list_summery)
total_data['장점'] = pd.Series(list_merit)
total_data['단점'] = pd.Series(list_disadvantages)
total_data['경영진에게 바라는 점'] = pd.Series(list_managers)

# step9.엑셀 형태로 저장하기
total_data.to_excel("잡플래닛 리뷰_" + query + ".xlsx" ,index=True)

# step10.크롬 드라이버 종료
driver.close()

 


<관련 추가 글>

 

2021.05.22 - [파이썬 패키지/GUI 프로그램] - [파이썬 GUI 프로그래밍] 잡플래닛 리뷰 정보 크롤링 GUI 프로그램

 

[파이썬 GUI 프로그래밍] 잡플래닛 리뷰 정보 크롤링 GUI 프로그램

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다. 오늘은 지난번 공유드렸던 아래의 프로젝트를 Pyqt5 패키지를 이용해 GUI로 사용할 수 있도록 만들어보았습니다. 개인적

coding-kindergarten.tistory.com

 

반응형