본문 바로가기
Python

[파이썬] indeed 인디드 채용공고 크롤링 리스트 추출해보기

by 퍼포먼스마케팅코더 2022. 8. 4.
반응형

예전에 게임잡도 잡코리아도 그렇고 사람인도 그렇고 그런 채용공고를 볼 수 있는 것들을 몇 개 넣어봤어요. 여러 가지 채용 공고가 많이 있거든요. 저는 그 중에서도 인디드라는 사이트가 있어요. 인디드 사이트가 있는데 여기 사이트도 볼만해서 조금은 봅니다. 그렇게 자주 하지는 않고 그래도 보면 유용한 것들이 많아요. 저는 많이 참고하고 있지만 오늘은 여러분과 마찬가지로 채용공고를 보는데 도움이 되는 내용을 넣었습니다.

파이썬 인디드 채용공고 크롤링 리스트 추출해보기

인디드라는 사이트입니다. 보시면 아시겠지만 이게 잡코리아나 사람 같은 경우는 채용 공고 안에서만 돌아가는 건데 인디드는 좋은 게 뭐냐면 일반 대기업이 있잖아요? 대기업 채용 공고 등도 올라옵니다. 그게 올라와서 대기업이나 공공기관, 공기업도 될 거예요. 인디드가 그게 좋아요. 그런 대기업이나 외국계 기업을 많이 볼 수 있어서 저도 많이 애용하고 있습니다. 많은 도움이 될 것 같아서 파이썬에서 인디드 채용 공고를 크롤링하는 목록이 엑셀 파일로 최종적으로 나오는데 그걸 넣었어요. 채용 공고는 아주 단순해요. 회사, 직무, url이 나오는데 이것도 마찬가지입니다. 키워드를 검색하면 그에 따른 채용 공고 리스트가 다 나오거든요. 그것을 참고해 보세요. 거의 채용공고 리스트 개수가 200개 정도? 200개 정도 나올 것 같네요. 그것만 참고하시면 될 것 같아요.

 

import  warnings
from    selenium import webdriver
from    selenium.webdriver.common.keys import Keys 
from    selenium.webdriver.common.action_chains import ActionChains
from    selenium.common.exceptions import NoSuchElementException,StaleElementReferenceException
from    bs4      import BeautifulSoup
import  time
import  pyperclip
import  requests
import  datetime
import  pymssql
import  pandas as pd
import  chromedriver_autoinstaller
import  subprocess

# !pip install chromedriver_autoinstaller <-- 주피터에선 ! 붙이면은 설치됨.

# date, 회사, 직무, URL
#'https://kr.indeed.com/%EC%B1%84%EC%9A%A9%EB%B3%B4%EA%B8%B0?jk=' + 

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import chromedriver_autoinstaller
import subprocess
import shutil

warnings.filterwarnings('ignore')

f =  open('C:/Users/SAMSUNG/Desktop/python/raw/indeed_apply.csv', 'w', encoding='utf-8-sig')
f.write("date,회사,직무,URL"+'\n')

try:
    shutil.rmtree(r"c:\chrometemp")  #쿠키 / 캐쉬파일 삭제
except FileNotFoundError:
    pass

subprocess.Popen(r'C:\Program Files\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\chrometemp"') # 디버거 크롬 구동

option = Options()
option.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

chrome_ver = chromedriver_autoinstaller.get_chrome_version().split('.')[0]
try:
    driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option)
except:
    chromedriver_autoinstaller.install(True)
    driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option)
driver.implicitly_wait(10)

for n in range(0, 1001, 50) :
    url = 'https://kr.indeed.com/%EC%B7%A8%EC%97%85?q=%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D&limit=100&radius=25&start=' + str(n)
    driver.get(url)
    driver.implicitly_wait(10)
    html = driver.page_source
    soup = BeautifulSoup(html, 'html.parser')
    results = soup.find_all("a", {"class" : "tapItem"})
    for ar in results :
        title = ar.find("h2", {"class" : "jobTitle"}).select_one("span[title]").text
        title2 = title.replace(",", "")
        try : 
            company = ar.find("span", {"class" : "companyName"}).text
        except :
            company = "회사명없음"
        url = ar.attrs['data-jk']
        url2 = 'https://kr.indeed.com/viewjob?jk=' + str(url)
        now = datetime.datetime.now()
        nowDate = now.strftime('%Y-%m-%d')
        f.write(nowDate + ',' + str(company) + ',' + str(title2) +',' + str(url2) + '\n')
        
f.close()        
driver.close()

# 데이터 쌓기

conn = pymssql.connect(server='localhost', user='', password='', database='' , charset='utf8')

indeed_query = '''

IF OBJECT_ID(N'tempdb..#indeed_apply') IS NOT NULL
DROP TABLE #indeed_apply 

CREATE TABLE #indeed_apply (
    Date date NULL,
    Company nvarchar(max) null, 
    Job nvarchar(max) NULL,
    URL nvarchar(max)  NULL
)

bulk insert #indeed_apply  from 'C:/Users/SAMSUNG/Desktop/python/raw/indeed_apply.csv'  with (firstrow=2, fieldterminator = ',' , rowterminator = '\n', codepage='65001' , keepnulls )

insert into mytest.dbo.indeed_apply
select * FROM #indeed_apply 

select * FROM mytest.dbo.indeed_apply with (nolock) ; 
'''
data3 = pd.read_sql(sql=indeed_query, con=conn)

conn.commit()
conn.close()

 

반응형

댓글