backend/python

파이썬 데이터 라이브러리 - 수찬님 강의 2일차 복습 (1), 동적인 웹사이트 크롤링

seul chan 2016. 11. 8. 23:31

* 동적인 웹 사이트 크롤링


-동적인 웹사이트 확인: Javascript를 껐을 때 동작이 안되면 동적인 사이트

(web developer로 javascript disable)


*크레딧잡을 크롤링 해보았다

(기본적으로 requests, json 등은 import 해 준 상태여야 한다)

----------------------------------------------------------------------------------------------------

KEYWORD_URL = "https://kreditjob.com/api_ver2/searchData?q=" 

DETAIL_URL = "https://kreditjob.com/api_ver2/getInfoByQueryPkNm?query="


# = 뒤의 공간이 비어있는 이유는 뒤에 Keyword(삼성) 나 특정 기업의 id값이 오기 때문

(ex. https://kreditjob.com/?company=124810-삼성전자)


get_keyword_url = lambda keyword: KEYWORD_URL + keyword

get_detail_url = lambda pk_nm: DETAIL_URL + pk_nm


# 각각의 URL에 keyword, ID값을 주어주는 작업. pk_nm은 keyword_url 데이터에서 얻어내야한다.


# 빈 data를 만들고 거기에다가 넣자


KEYWORD = "삼성"

data = [

        "name":company.get('SERVICE_NAME'),

        "id":company.get('PK_NM')

    }    

    for company

    in requests.get(get_keyword_url(KEYWORD)).json().get("data")

]


# 빈 data 리스트에 KEYWORD_URL 값 중 필요한 name과 id 추출

(detail_url 값 뒤에 오는것이 id-name 유형이기 때문)

#get_keyword_url(KEYWORD) 에서 "data"를 뽑으면 나오는 결과물을 하나씩 집어넣어서 각각의 '삼성' 계열사들의 정보를 추출


result = [

{

    "name":company.get("name"),

    "salary": requests.get(get_detail_url(company['id'])).json().get("data")[0].get("AVG_SALARY_YY")


    }

    for company

    in data

]


# 최종 결과물: {} dict 형식으로 만들어서 "name", "salary" key 값에 value를 넣어줌.

# name은 data에 있는 name 그대로

# salary는 차근차근..

------------------------------------------------------------------------------

==> 추후에 함수화 시키는 작업도 하자!