크롤링한 면접 질문을 바탕으로 키워드 정제를 한 후 군집 분석을 통해 기업의 인재상과 매칭시키기 위해 우선 면접 질문 크롤링을 하였다.
목표 : 페이지네이션을 고려한 면접 질문 크롤링
Html과 XML 문서를 파싱하기 위한 파이썬 패키지이다. HTML의 트리구조를 활용하여 데이터를 추출할 수 있기 때문에 편리하다.
사이트에 게시물이 너무 많을 시 일반적으로 페이지네이션을 통해 게시물을 나눠놓는다. 이 때 url을 관찰하면 대개 마지막 숫자에만 차이가 있고 나머지 url은 같은 것을 확인할 수 있다. 관찰할 때에는 첫 화면 url이 아닌 페이지네이션을 누른 후의 url을 관찰해야한다.
https://www.ajou.ac.kr/kr/ajou/notice.do?mode=list&&articleLimit=10&article.offset=10
https://www.ajou.ac.kr/kr/ajou/notice.do?mode=list&&articleLimit=10&article.offset=20
이를 이용하여 코드를 짜면 쉽게 페이지네이션을 포함하여 크롤링을 할 수 있다.
웹 페이지에서 F12(Window)를 눌러 크롤링할 부분의 HTML에서 오른쪽 버튼을 누르면 copy > copy selector 이라는 것이 있다. 이를 이용하면 쉽게 원하는 크롤링 부위를 가져올 수 있다.
from bs4 import BeautifulSoup
import requests
import pandas as pd
base_url = "http://www.jobkorea.co.kr/starter/review/view?FavorCo_Stat=0&OrderBy=0&Page=1&C_Idx=1&Half_Year_Type_Code=0&Ctgr_Code=5&VPage={}"
df = pd.DataFrame(columns=['title','body'])
a = 0
for n in range(20):
url = base_url.format(n+1)
response = requests.get(url)
source = response.text
soup = BeautifulSoup(source, 'html.parser')
titles = soup.select('ul > li > div > span.tit')
bodys= soup.select('ul > li > div > span.tx')
for i in range(len(titles)):
title = titles[i].text
title = title.strip()
body = bodys[i].text
body = body.strip()
df.loc[a] = [title,body]
a += 1
df.to_excel('D:\\대학\\4-2\\산프\\crawling\\samsung.xlsx',encoding='UTF-8')