2020-08-25

MSDS 여러개 다운로드 받기 (Python 코드)

0. CAS No. 목록을 갖고 있는데 MSDS 작성에 노가다가 들어간다.

그래서 파이썬으로 MSDS를 전부 다운받을 수 있도록 코드를 만들었다.

한국산업안전보건공단의 DB를 사용한다.





1. 코드

코드는 GitHub으로 공유하는 것이 좋을 것 같아 링크로 대체하였다...

CAS_to_MSDS.py





2. 컨셉

일단 CAS No. 목록을 보유하고 있어야 한다.

CAS No.를 한국산업안전보건공단에서 검색해서 msds_id를 얻는다.

msds_id로 pdf 파일을 다운로드 받는다.





3. 원리

get_msds_id 함수에서 cas_no를 받아서

산업안전보건공단에서 자체적으로 사용하는 msds_id를 찾아낸다.

msds_id를 토대로 get_pdf 함수에서 pdf 파일을 다운받는다.


http://msds.kosha.or.kr/kcic/msdsdetail.do 에서 인쇄 또는 저장을 누르면

포함할 정보의 항목을 설정할 수 있고,

해당 설정은 jsp에게 data로 post함으로써 설정할 수 있다.


이 부분에서 0과 1로 표현할 수 있는 듯하다.

PDF 파일을 다운받기 위해선 AICipher라는 값이 필요하다.

왜 필요한진 모르겠다.

하지만 필요하기 때문에 찾아보면


아까 그 jsp 인쇄 페이지에서 자바스크립트로 처리하고 있음을 알 수 있다.

또 왜인진 몰라도.. 다 비슷하게 생겼는데 엄밀히는 다르게 생겼다.

그 중 callParameter 변수를 사용한다.

RegEx로 잘라 requests.post할 때 data에 붙여서 보낸다.

여기에서 받는 리스폰은 PDF 파일이므로, 바이너리 파일로 저장해줘야 한다.





4. 사용법

cas_nofor 문으로 대입시켜가면서

목록을 하나하나 돌도록 추가 코드를 짜서 사용하면 된다.

다운로드 경로는 '다운로드 완료' 글자 위에 open 함수에서 정의하면 된다.



5. 업데이트 내역:

2021/08/17 - 요청 주소 최신화 및 클래스화 진행

댓글 1개:

  1. 안녕하세요. 블로그 글 도움 많이 받았습니다.
    혹시 PDF가 아닌 엑셀파일로도 저장이 가능할까요?
    여러 방법을 시도해보았는데 도저히 안되어서 질문드립니다

    답글삭제