목적
- 잡플래닛의 기업리뷰정보를 크롤링
1. 필요사항 Import 및 잡플래닛 ID와 PW기입
- 잡플래닛은 로그인을 해야 리뷰가 보이는 사이트임
# step1.프로젝트에 필요한 패키지 불러오기
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import pandas as pd
import requests
import re
import numpy as np
from selenium.webdriver.common.keys import Keys
# step2.로그인 정보 및 검색할 회사 미리 정의, 해당 회사의 리뷰 끝 페이지도 정의
usr = ""
pwd = ""
2. 크롬드라이버 설정 및 로그인 정보전달
# step3.크롬드라이버 실행 및 잡플래닛 로그인
driver = webdriver.Chrome("C:/Users/XXXXXX/Downloads/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)
k=0
3. 리스트 변수 정의
# step4.크롤링한 정보를 담을 리스트명 정의
list_div = []
list_cur = []
list_date =[]
list_stars = []
list_summery = []
list_merit = []
list_disadvantages = []
list_managers =[]
all_total_data = pd.DataFrame()
4. 크롤링 대상 회사를 선정하고 URL로 정리 후 크롤링진행[Main]
**df2에 해당하는 데이터
- 실제 수집URL을 회사별로 관리하고 아래 for문에서 해당 df2를 순회하며 크롤링진행
- 파일로 담아놓아도 되고 DB Table형태로 관리해도 됨(개인적으로 Table형태를 선호함)
for name,dit,ns_address,page in zip(df2['이름'],df2['크롤링구분'],df2['수집URL'],df2['설명']):
page = int(page)
# step5.원하는 회사의 리뷰 페이지까지 이동
header = {'User-Agent': ''}
driver.implicitly_wait(3)
driver.get(ns_address)
req = requests.get(ns_address,verify=False)
html = req.text
soup = BeautifulSoup(html, "html.parser")
if k ==0:
driver.find_element_by_css_selector("button.btn_close_x_ty1 ").click()
time.sleep(3)
# step6.원하는 회사의 직무/근속여부/일시/요약/평점/장점/단점/경영진에게 바라는 점 크롤링 (for문으로 반복)
for i in range(page):
try:
user_info = driver.find_elements_by_css_selector("span.txt1")
count = int(len(user_info)/4)
list_user_info = []
#별점
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_stars.append("5")
list_summery.append(a)
#list_merit.append(a)
b = list_review[3*j+1]
list_stars.append("1")
list_summery.append(b)
#list_disadvantages.append(b)
except:
# 다음 페이지 클릭 후 for문 진행, 끝 페이지에서 다음 페이지 클릭 안되는 것 대비해서 예외처리 구문 추가
try:
driver.find_element_by_css_selector("a.btn_pgnext").click()
time.sleep(15)
except:
print("break1")
break
# 다음 페이지 클릭 후 for문 진행, 끝 페이지에서 다음 페이지 클릭 안되는 것 대비해서 예외처리 구문 추가
try:
driver.find_element_by_css_selector("a.btn_pgnext").click()
time.sleep(15)
except:
break
print("break2")
print(name, i)
k=k+1
# step7.pandas 라이브러리로 표 만들기
total_data = pd.DataFrame()
total_data['크롤링구분'] = '잡플래닛'
total_data['평점'] = pd.Series(list_stars)
total_data['리뷰'] = pd.Series(list_summery)
5. Data Frame 출력결과
total_data
2023.02.01 - [IT/Python] - [Web크롤링] 감정분석을 위한 네이버영화 코멘트/평점 Python 크롤링
[Web크롤링] 감정분석을 위한 네이버영화 코멘트/평점 Python 크롤링
목적 - 감정분석을 위해 네이버 영화평점을 크롤링 하는 파이썬 프로그램작성 - 무작위의 네이버 영화 평점별 리뷰 데이터 크롤링 https://movie.naver.com/movie/point/af/list.naver? 평점 : 네이버 영화 네티
comemann.tistory.com
2023.02.01 - [IT/Python] - [Web크롤링] 감정분석을 위한 잡플레닛 코멘트/평점 Python 크롤링
[Web크롤링] 감정분석을 위한 잡플레닛 코멘트/평점 Python 크롤링
목적 - 잡플래닛의 기업리뷰정보를 크롤링 1. 필요사항 Import 및 잡플래닛 ID와 PW기입 - 잡플래닛은 로그인을 해야 리뷰가 보이는 사이트임 # step1.프로젝트에 필요한 패키지 불러오기 from bs4 import
comemann.tistory.com
2023.02.02 - [IT/Python] - [Web크롤링] 감정분석을 위한 네이버 쇼핑 코멘트/평점 Python 크롤링
[Web크롤링] 감정분석을 위한 네이버 쇼핑 코멘트/평점 Python 크롤링
목적 - 네이버 쇼핑의 '쇼핑몰리뷰'의 평점과 텍스트 크롤링 1. 필요사항 Import - 잡플래닛은 로그인을 해야 리뷰가 보이는 사이트임 # step1.프로젝트에 필요한 패키지 불러오기 from bs4 import Beautiful
comemann.tistory.com
'IT > Python' 카테고리의 다른 글
[국토부실거래가] 아파트 분양권 크롤링 API Python 개발 (0) | 2023.02.06 |
---|---|
[Web크롤링] 감정분석을 위한 네이버 쇼핑 코멘트/평점 Python 크롤링 (1) | 2023.02.02 |
[Web크롤링] 감정분석을 위한 네이버영화 코멘트/평점 Python 크롤링 (0) | 2023.02.01 |
[OpenDart-1] Python으로 Dart기업정보 DataFrame으로 저장하기 (0) | 2023.01.30 |
[Python] 으로 mariaDB(Synology DB) 연결 및 SQL결과를 Dataframe으로 저장 (0) | 2023.01.27 |