student_developer
학생개발자의 IT Story
student_developer
전체 방문자
247,845
오늘
130
어제
124
반응형
  • 분류 전체보기 (187)
    • About Me (2)
    • IT NEWS (135)
      • Mobile NEWS (94)
      • laptop NEWS (3)
      • HW NEWS (4)
      • IT technology N.. (8)
      • IT company news (10)
    • OS || 운영체제 (1)
      • LINUX (1)
    • IT INFO (8)
      • Windows (5)
    • Programming (7)
      • C++ (1)
      • Python (3)
      • Project (1)
    • 일상 (7)
      • 일상 (6)
      • 이슈 (0)
    • 정보&꿀팁 (7)
    • IT & SW 칼럼 (1)

블로그 메뉴

    공지사항

    • 2020 새해 복 많이 받으세요^^
    • 소개

    인기 글

    • 학교 인터넷 게임 사이트 차단 속도 저하 없이 우회하기!
      2019.12.20
    • Python으로 미세먼지 농도를 확인하자!
      2020.03.06
      Python으로 미세먼지 농도를 확인하자!
    • [Review | Tip]딥러닝 기반 코드 자동완성 플러그⋯
      2019.12.12
      [Review | Tip]딥러닝 기반 코드 자동완성 플러그⋯
    • Windows 11, "이 설정은 관리자가 관리합니다"라고⋯
      2021.08.03
      Windows 11, "이 설정은 관리자가 관리합니다"라고⋯
    • [보안/기술]삼성 KNOX (삼성녹스) 란? -- 삼성 K⋯
      2019.02.25
      [보안/기술]삼성 KNOX (삼성녹스) 란? -- 삼성 K⋯

    태그

    • 갤럭시
    • 삼성 갤럭시
    • Exynos 9820
    • 5G
    • 삼성 갤럭시 S10 플러스
    • galaxy S10
    • ces2019
    • samsung galaxy S10 Plus
    • ai
    • 삼성 갤럭시 S10
    • 중국
    • Exynos
    • 삼성
    • 삼성전자
    • 갤럭시 S10
    • Samsung
    • 갤럭시 언팩 2019
    • 폴더블
    • 윈도우
    • Nvidia

    최근 댓글

    • 좋은 글 감사합니다.
      아이폰 14 pro max
    • 안녕하세요! 설치전 질문 있습니다. 보안부팅을 해제후에 설⋯
      ㅜㅜ
    • node.js 설치 확인해보세요
      IlllIIllIllIl
    • URL 주소는 어디서 찾아볼 수 있을까요?? 공공데이터 포⋯
      연빈
    • 리뷰 정말 잘 봤습니다. 블로거님 글 보니 저도 가격비교하⋯
      세일즈코리아

    최근 글

    • 삼성 갤럭시 GOS(Game Optimizing Servi⋯
      2022.03.04
      삼성 갤럭시 GOS(Game Optimizing Servi⋯
    • 삼성 Exynos 2200 공개!.. Samsung Xcl⋯
      2022.01.18
      삼성 Exynos 2200 공개!.. Samsung Xcl⋯
    • 삼성 갤럭시 S22 론칭 시점에 Exynos 2200 공개⋯
      2022.01.13
      삼성 갤럭시 S22 론칭 시점에 Exynos 2200 공개⋯
    • 삼성전자 CES 2022 티져 영상 공개
      2021.12.28
      삼성전자 CES 2022 티져 영상 공개
    • [Windows 11] 비정상적으로 느린 윈도우 업데이트 ⋯
      2021.11.21
      [Windows 11] 비정상적으로 느린 윈도우 업데이트 ⋯

    티스토리

    hELLO · Designed By 정상우.
    student_developer

    학생개발자의 IT Story

    [Python 3.x]택배 실시간 배송조회 구현 {Delivery Service Tracking}
    Programming/Project

    [Python 3.x]택배 실시간 배송조회 구현 {Delivery Service Tracking}

    2019. 10. 3. 13:49
    반응형

    이 프로젝트는 더 이상 작동하지 않을 수 있습니다;,

    온라인 쇼핑몰에서 상품을 구매 후 배송 조회를 할 때 매번 검색해서 배송 조회를 하는 게 귀찮아서

    택배 배송 조회 기능을 한번 만들어 볼까 하는 생각에 이왕이면 여러 플랫폼에 적용이 가능하도록 개발한 프로그램입니다.

    실행결과

    프로그램을 실행하기 전에 DST_run.py을 수정해야 합니다.

    _int = Template_Gen(code=Code.search(name="cj대한통운"), dst_code="111111111111")

    # name : 택배회사 이름, dst_code : 송장번호

    다음과 같이 주문 후 표시된 송장번호와 택배 회사명을 입력 후 실행하게 되면

    위 이미지와 같이 json형태로 출력하게 됩니다.

     

    여기서 택배회사 코드 조회는 노가다를 통해 구현하였습니다.

    택배회사 코드는 스마트택배 API 문서를 참고하였습니다.

    http://info.sweettracker.co.kr/apidoc

     

    배송정보연동

    배송조회를 필요로 하는 페이지에서 아래와 같이 입력 form 창을 추가합니다. 스마트 택배 배송조회에서 발급 받은 APIKEY를 Parameter(파리미터)값에 추가합니다. 스마트 택배 배송조회 API 에서 제공받은 택배사 목록 코드를 form 창에 mapping(매핑)합니다. 택배사 코드와 운송장 번호를 Parameter(파리미터)값에 추가합니다. 사용할 템플릿을 선택하여 url 마지막에 추가합니다. ( 1번 cyan, 2번 pink, 3번 gray)

    info.sweettracker.co.kr

    # DeliveryServiceTracking은 스마트 택배 API가 아닌 네이버 조회 결과를 파싱 하는 형태로 개발하였습니다.

    스마트택배 API를 사용하기에는 무료 제공의 경우 요청 제한이 걸려 있고 그 이상을 문제없이 서비스하려면 

    비용이 들기 때문입니다.

     

    아래 코드를 통해 택배회사 코드를 가져오게 됩니다.

    #DeliveryServiceTracking / dst_co.py

    class DST_Company:
        def __init__(self):
            self.company_code = {
                "건영택배": "18	", "경동택배": "23", "홈픽택배": "54",
                "굿투럭": "40", "농협택배": "53", "대신택배": "22",
                "로젠택배": "06", "롯데택배": "08", "세방": "52",
                "애니트랙": "43", "우체국택배": "01", "일양로지스": "11",
                "천일택배": "17", "한덱스": "20", "한의사랑택배": "16",
                "한진택배": "05", "합동택배": "32", "호남택배": "45",
                "CJ대한통운": "04", "CU편의점택배": "46", "CVSnet 편의점택배": "24",
                "KGB택배": "56", "KGL네트웍스": "30", "SLX": "44",
                "하이택배": "58", "FLF퍼레버택배": "64",
                "롯데글로벌 로지스": "99", "TNT Express": "25", "USPS": "26",
                "APEX(ECMS Express)": "38", "에어보이익스프레스": "29", "Cway Express": "57",
                "DHL": "13", "범한판토스": "37", "EMS": "12",
                "Fedex": "21", "CJ대한통운 국제특송": "42", "GSMNtoN(인로스)": "28",
                "i-Parcel": "34", "DHL Global Mail": "33", "EuroParcel(유로택배)": "55",
                "UPS": "14", "GSI Express": "41"
            }
    
        def search(self, name):
            code = self.company_code[f'{name}']
            return code
    
    
    Code = DST_Company()

     

    dst_template_generator.py는 파싱 한 데이터를 가공하는 모듈입니다.

    ...        
            try:
                DST_Status = self.json_data['completeYN']
                DST_invoiceNo = self.json_data['invoiceNo']
                DST_itemName = self.json_data['itemName']
    
                DST_level = self.json_data['level']
    
                DST_receiverName = self.json_data['receiverName']
                DST_receiverAddr = self.json_data['receiverAddr']
    
                DST_trackingDetails = self.json_data['trackingDetails']
                DST_estimate = self.json_data['estimate']
                """
                진행단계 [level 1: 배송준비중, 2: 집화완료, 3: 배송중, 4: 지점 도착, 5: 배송출발, 6:배송 완료]
                """
                X = DST_LEVEL(x=DST_level)
                Y = DST_CompleteYN(y=DST_Status)
                # return [DST_Status, DST_invoiceNo, DST_itemName, DST_level, DST_receiverName, DST_receiverAddr, DST_result, DST_trackingDetails, DST_estimate]
                DST_Td = DST_trackingDetails[len(DST_trackingDetails) - 1]
                DST_timeString = DST_Td['timeString']
                DST_telno = DST_Td['telno']
                DST_telno2 = DST_Td['telno2']
                DST_manName = DST_Td['manName']
                DST_where = DST_Td['where']
                # DST_kind = DST_Td['kind']
    
                return {
                    '송장번호': DST_invoiceNo,
                    '배송여부': Y,
                    '배송상황': X,
                    'INFO': {
                        '상품명': DST_itemName,
                        '수령인': DST_receiverName,
                        '주소': DST_receiverAddr,
                        '배송소요시간': DST_estimate,
                        '세부정보': {
                            "진행시간": DST_timeString,
                            "지점전화번호": DST_telno,
                            "배송기사이름": DST_manName,
                            "배송기사전화번호": DST_telno2,
                            "진행위치지점": DST_where
                        }
                    }
                }
    
            except KeyError as e:
                null = e
                return {
                    'Error': 'System Error'
                }
    ...

     

    그저께는 API레퍼런스 가이드입니다.

    Generate
    ---------
     
    DST Template Generation :
    1 | DST_Status :
    배송 완료 여부(true or false)
     
    2 | DST_invoiceNo :
    운송장 번호
     
    3 | DST_itemName :
    상품 이름
     
    4 | DST_level :
    진행단계 [level 1: 배송준비중, 2: 집화완료, 3: 배송중, 4: 지점 도착, 5: 배송출발, 6:배송 완료]
     
    5 | DST_receiverName :
    받는 사람
     
    6 | DST_receiverAddr :
    받는 사람 주소
     
    7 | DST_result :
    조회 결과
     
    8 | DST_trackingDetails :
     
    9 | DST_estimate :
    배송예정 시간

    다음과 같은 정보를 통해 다음 코드에서 처리된 정보를 출력하게 됩니다.

                return {
                    '송장번호': DST_invoiceNo,
                    '배송여부': Y,
                    '배송상황': X,
                    'INFO': {
                        '상품명': DST_itemName,
                        '수령인': DST_receiverName,
                        '주소': DST_receiverAddr,
                        '배송소요시간': DST_estimate,
                        '세부정보': {
                            "진행시간": DST_timeString,
                            "지점전화번호": DST_telno,
                            "배송기사이름": DST_manName,
                            "배송기사전화번호": DST_telno2,
                            "진행위치지점": DST_where
                        }
                    }
                }
    
    

    본 프로젝트는 Github에 소스코드가 공개되어 있습니다.

    MIT LICENSE가 적용됩니다.

     

    https://github.com/zeroday0619/DeliveryServiceTracking

     

    zeroday0619/DeliveryServiceTracking

    택배 배송 상황을 json으로 표시합니다. Contribute to zeroday0619/DeliveryServiceTracking development by creating an account on GitHub.

    github.com

     

    학생 개발자의  ITstory에 방문해주셔서 감사합니다 ^^

    반응형
      mit license, 배송조회, 택배배송조회서비스, 파이썬, 파이썬 3, 프로젝트
      student_developer
      student_developer
      최신 IT 동향 정보 및 뉴스, SW개발 분야, 게임 관련 뉴스 및 정보를 다루는 종합 IT & Culture 블로그
      댓글쓰기

      티스토리툴바