Skip to main content

POSCO Learning Platform Crawling Code Library

Project description

posco-lp

포스코 Learning Platform(LP) 관리자 기능을 자동화하기 위한 파이썬 패키지입니다. 관리자 권한이 있는 계정으로만 정상적인 사용이 가능합니다.

설치

pip install posco-lp

소스 폴더에서 직접 설치하려면 아래와 같이 실행합니다.

pip install .

주요 의존성은 requests, pandas, numpy, bs4, openpyxl입니다.

빠른 시작

from poscolp import LP, __version__

print(__version__)  # 1.2.2

lp = LP(lp_id="your_id", lp_pw="your_password")

company_df = lp.getCompanyList()
user_df = lp.getUserList(search_text="홍길동")
cha_df = lp.getChaList(search_text="리더십", start_date="20260101", end_date="20261231")

메시지 출력이 필요한 경우에만 verbose=True를 사용하면 됩니다.

lp = LP(lp_id="your_id", lp_pw="your_password", verbose=True)

# 또는 메서드별로만 출력 활성화
user_df = lp.getUserList(search_text="홍길동", verbose=True)

엑셀 저장이 필요한 경우 filename_to_save 파라미터를 사용하면 되며, 확장자를 생략하면 .xlsx가 자동으로 붙습니다.

1.2.2에서 달라진 점

  • getChaList() 요청을 최신 LP 화면 기준 payload로 정리했습니다. 차수명 검색어는 courseCsName으로 전송하고, 기간 구분은 eduPeriodFlag='M'으로 조회합니다.
  • getStudentRegisterList() 요청을 최신 LP 화면 기준 payload로 보강했습니다. 응답에 hpNo가 있으면 휴대폰 컬럼으로 함께 반환합니다.
  • getUserList() 요청을 최신 사용자 검색 화면 기준으로 정리했습니다. stay_type 파라미터로 재직/퇴직 조회를 구분할 수 있고, 퇴직자 응답처럼 일부 컬럼이 축약된 경우에도 안전하게 반환합니다.
  • getUserHistory(search_type="NUM")는 POSCO 고정 필터를 강제로 쓰지 않고, 최신 사용자 검색 결과에서 LP관리ID를 확인한 뒤 교육이력을 조회합니다.

1.2.1에서 달라진 점

  • getLectureRoomInfo() 요청의 searchEduArea, searchEduPlaceCode를 공란으로 전송하도록 수정했습니다.
  • 강의실 예약 조회는 특정 교육지역/교육장 코드에 묶이지 않고 LP 기본 조회 범위를 따릅니다.

1.2.0에서 달라진 점

  • pyautogui 의존성을 제거했습니다.
  • 로그인 정보가 없을 때 더 이상 GUI 입력창을 띄우지 않습니다.
  • 로그인 필요한 메서드는 내부적으로 자동 로그인 시도를 먼저 수행합니다.
  • getUserList()search_textcompany_code를 모두 비우면 최신 LP 화면과 동일하게 전체 조회를 수행합니다. company_code=''는 전체, company_code='0'는 POSCO를 의미합니다.
  • 수료자 조회/일괄 수료 처리에서 LP HTML 파싱 실패 시 안전하게 종료하도록 보강했습니다.
  • getLectureRoomInfo()의 잘못된 요청 코드와 빈 결과 처리 로직을 정리했습니다.
  • print() 기반 안내 메시지는 기본적으로 출력하지 않으며, verbose=True일 때만 출력합니다.
  • 버전 정보는 poscolp/__version__.py를 단일 원본으로 사용하고, setup.py는 그 값을 읽어 배포합니다.

로그인 및 메시지 동작

  • LP(lp_id, lp_pw) 형태로 생성하면 인증이 필요한 메서드에서 자동 로그인됩니다.
  • LP()처럼 로그인 정보 없이 객체를 생성할 수는 있지만, 인증이 필요한 메서드는 실패 처리됩니다.
  • 기본 동작은 조용한 모드이며, 안내/경고/오류 메시지는 출력하지 않습니다.
  • 생성자에서 verbose=True를 주면 해당 객체의 메서드 전반에 출력이 활성화됩니다.
  • 특정 호출에서만 메시지가 필요하면 각 메서드의 verbose=True를 사용하면 됩니다.
  • 대부분의 조회 메서드는 로그인 실패 시 False를 반환합니다.
  • getUserHistory()search_text가 비어 있으면 None을 반환합니다.
  • updateStudentToPassed(), resetUserPassword()는 반환값 구조를 바꾸지 않으며 None을 반환합니다. 처리 메시지는 verbose=True일 때만 출력합니다.

메서드 명세

공통

  • login(verbose=False)
    • LP 로그인 세션을 생성합니다.
    • 로그인 진행 및 실패 메시지는 verbose=True일 때만 출력합니다.

회사/사용자 조회

  • getCompanyList(company_cate="그룹사", filename_to_save="", verbose=False)
    • 그룹사, 협력사, 해외법인 목록을 DataFrame으로 반환합니다.
  • getUserList(search_text="", search_type="NAME", company_code="", filename_to_save="", verbose=False, stay_type="N")
    • 사용자 검색 결과를 DataFrame으로 반환합니다.
    • search_typeNAME, ID, NUM을 지원합니다.
    • stay_typeN/재직, Y/퇴사/퇴직을 지원합니다.
    • 최신 LP 화면 기준으로 searchCompType, searchDepartText, searchPiumTagtCdText, searchStayType를 포함한 요청을 사용합니다.
    • search_textcompany_code를 모두 비우면 전체 조회를 수행합니다. company_code=''는 전체, company_code='0'는 POSCO를 의미합니다.
    • 퇴직자 조회 응답은 일부 상세 컬럼이 없을 수 있으며, retrDt가 있으면 퇴직일 컬럼으로 함께 반환합니다.
  • getUserHistory(search_type="LP_USER_ID", search_text="", filename_to_save="", verbose=False)
    • 특정 사용자의 교육 이력을 반환합니다.
    • search_type="NUM"일 때는 최신 사용자 검색 결과에서 LP관리ID를 먼저 확인한 뒤 조회하며, POSCO 고정 필터를 강제로 사용하지 않습니다.
    • search_text가 비어 있으면 조회를 수행하지 않고 None을 반환합니다.
  • resetUserPassword(lp_user_id, verbose=False)
    • 특정 사용자의 LP 비밀번호를 초기화합니다.
    • 처리 결과 메시지는 verbose=True일 때만 출력합니다.

과정/차수/교육생

  • getChaList(group_name="", search_text="", start_date="", end_date="", simple=True, filename_to_save="", verbose=False)
    • 차수 목록을 반환합니다.
    • 최신 LP 화면 기준으로 courseCsName, eduMngtDeptName, searchStartDt/searchEndDt, eduPeriodFlag='M' 형태의 조회 요청을 사용합니다.
  • getChaDetail(courseId, chaId, verbose=False)
    • 차수 상세 정보를 dict로 반환합니다.
  • getStudentRegisterList(courseId, chaId, filename_to_save="", verbose=False)
    • 차수 등록자 목록을 반환합니다.
    • 최신 LP 화면 기준으로 draw, search[value], searchPropStatCode, searchClassSeq, companyInfo, keyword, courseOpenScope, eduMngtDept, showOthGrpYn을 포함한 조회 요청을 사용합니다.
    • 반복되는 columns[n][...] 메타데이터는 서버에서 생략 가능하여 포함하지 않습니다.
    • LP 응답에 성별(sexdstn) 또는 휴대폰(hpNo) 컬럼이 없으면 해당 컬럼을 제외하고 반환합니다.
  • getStudentPassedList(courseId, chaId, filename_to_save="", verbose=False)
    • 차수 수료자 목록을 반환합니다.
    • LP 화면 구조가 바뀌어 파싱에 실패하면 False를 반환할 수 있으며, 관련 메시지는 verbose=True일 때만 출력합니다.
  • updateStudentToPassed(courseId, chaId, verbose=False)
    • 수료 조건 대상자를 일괄 수료 처리합니다.
    • 처리 결과 메시지는 verbose=True일 때만 출력합니다.

설문/강의실

  • getSurveyMeanScore(courseId, chaId, filename_to_save="", verbose=False)
    • 설문별 평균 점수와 응답자 수를 반환합니다.
  • getSurveyAnswerList(courseId, chaId, filename_to_save="", verbose=False)
    • 설문 응답 원본 데이터를 반환합니다.
  • getLectureRoomInfo(date, filename_to_save="", verbose=False)
    • 특정 날짜의 강의실 예약 정보를 반환합니다.
    • 요청 시 searchEduArea, searchEduPlaceCode는 공란으로 전달합니다.
    • 날짜 형식 오류 메시지는 verbose=True일 때만 출력합니다.

반환 규칙 요약

  • 조회 성공: 주로 pandas.DataFrame 또는 dict
  • 조회 실패: 주로 False
  • 입력이 비어 조회 자체를 진행하지 않는 경우: 일부 메서드는 None
  • 처리형 메서드: 반환값은 그대로 None, 처리 메시지는 verbose=True일 때만 출력

주요 변경 이력

  • 1.2.2 | 2026-07-03
    • getChaList(), getStudentRegisterList(), getUserList() 요청을 최신 LP 화면 기준으로 갱신
    • getUserList()stay_type 지원 및 퇴직자 응답 안전 처리 추가
    • getStudentRegisterList() 휴대폰 컬럼 지원
    • getUserHistory(search_type="NUM")의 POSCO 고정 필터 제거
  • 1.2.1 | 2026-06-26
    • getLectureRoomInfo()의 강의실 조회 요청에서 교육지역/교육장 하드코딩 제거
  • 1.2.0 | 2026-06-26
    • pyautogui 제거
    • 공통 로그인 가드 추가
    • 로그인 정보 미입력 시 경고 후 실패 처리
    • openpyxl 의존성 추가
    • verbose 기반 메시지 출력 제어 추가
    • README 및 docstring 정비
  • 1.1.3 | 2023-09-21
    • getStudentRegisterList()에서 성별 컬럼 누락 시 발생하던 오류 수정
  • 1.1.2 | 2023-08-31
    • getStudentRegisterList() 결과에 신청/변경일시와 성별 컬럼 추가
  • 1.1.1 | 2023-07-16
    • getUserHistory() 메서드 추가
  • 1.0.9 | 2023-06-01
    • getChaList() 결과에 교육지역 정보 추가
  • 1.0.8
    • getSurveyAnswerList() 메서드 추가
    • 저장 파일명에 확장자가 없으면 .xlsx 자동 추가

주의 사항

  • POSCO Learning Platform 관리자 권한이 있는 계정이 필요합니다.
  • 일부 메서드는 LP 관리자 페이지의 HTML 구조에 의존합니다.
  • 패키지 내부 요청은 기존 구현과 동일하게 verify=False로 동작합니다.
  • 자동화 코드에 이미 이전 버전을 사용 중이라면, 업그레이드 전 verbose 사용 여부와 실패 시 반환값 흐름을 한 번 점검하는 것을 권장합니다.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

posco_lp-1.2.2.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

posco_lp-1.2.2-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file posco_lp-1.2.2.tar.gz.

File metadata

  • Download URL: posco_lp-1.2.2.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for posco_lp-1.2.2.tar.gz
Algorithm Hash digest
SHA256 ead752dd892893ac0bac4fe525d5910581b286ee682a55c1870aabe598a2e56a
MD5 03101852a0b79a80020855ed29a365c9
BLAKE2b-256 d1056f782fb0aed3963a0a555ddc09d3da2ed7a2363fa306c9c834b7d83c604d

See more details on using hashes here.

File details

Details for the file posco_lp-1.2.2-py3-none-any.whl.

File metadata

  • Download URL: posco_lp-1.2.2-py3-none-any.whl
  • Upload date:
  • Size: 15.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for posco_lp-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9d23ae7bb978d6ebd1c8f706634380923e58c927f878979d9e735fe561769345
MD5 bb09ef37a0e3ab13b927b835d914cf5b
BLAKE2b-256 a8d270fcb66e85086655ab9ff22ed5a848d7c3f0a65e910f8f0b70237a5a6b9f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page