면접 질문 크롤링

Gyullbb·2020년 10월 28일
1

산공 프로젝트

목록 보기
2/5

크롤링한 면접 질문을 바탕으로 키워드 정제를 한 후 군집 분석을 통해 기업의 인재상과 매칭시키기 위해 우선 면접 질문 크롤링을 하였다.

목표 : 페이지네이션을 고려한 면접 질문 크롤링

BeautifulSoup

Html과 XML 문서를 파싱하기 위한 파이썬 패키지이다. HTML의 트리구조를 활용하여 데이터를 추출할 수 있기 때문에 편리하다.

페이지네이션

사이트에 게시물이 너무 많을 시 일반적으로 페이지네이션을 통해 게시물을 나눠놓는다. 이 때 url을 관찰하면 대개 마지막 숫자에만 차이가 있고 나머지 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
    다음 예시를 보더라도 offset이후의 값만 다른 것을 확인할 수 있다.

이를 이용하여 코드를 짜면 쉽게 페이지네이션을 포함하여 크롤링을 할 수 있다.

html copy selector

웹 페이지에서 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')

결과

profile
🎈도전 속의 여유를 즐기자🎈

0개의 댓글