Search

'폐업여부'에 해당되는 글 1건

  1. 2023.06.05 사업자 번호 유효 여부 크롤링

사업자 번호 유효 여부 크롤링

Python/Base 2023. 6. 5. 09:59 Posted by 퓨어레드

사업자 번호를 이상하게 입력하는 사람들 땜시 홈택스 간단 크롤러를 작업했다

 

def company_no_search(request, company_no: str):
    company_no = company_no.replace("-", "")

    if len(company_no) == 10:

        headers = {'Content-Type': 'text/xml'}

        xml = "<map id='ATTABZAA001R08'><pubcUserNo/><mobYn>N</mobYn><inqrTrgtClCd>1</inqrTrgtClCd><txprDscmNo>" + company_no + "</txprDscmNo><dongCode>05</dongCode><psbSearch>Y</psbSearch><map id='userReqInfoVO'/></map>"

        r = requests.post(
            'https://teht.hometax.go.kr/wqAction.do?actionId=ATTABZAA001R08&screenId=UTEABAAA13&popupYn=false&realScreenId=',
            data=xml, headers=headers)

        if r.status_code == 200:

            tree = elemTree.fromstring(r.text)

            trtEndCd = tree.find('./trtEndCd').text
            state = tree.find('./smpcBmanTrtCntn').text
            description = tree.find('./trtCntn').text

            success = False

            if "등록되어 있는 사업자등록번호 입니다" in state.strip():
                success = True

            r = {"success": success, "company_no": company_no, "end_cd": trtEndCd, "state": state, "message": description}

            new_company = CompanyNoSearch()

            new_company.company_no = company_no
            new_company.trt_end_cd = trtEndCd
            new_company.state = state
            new_company.description = description
            new_company.success = success

            new_company.save()

        else:
            r = {"success": False, "message": "조회 할 수 없습니다"}

    else:
        r = {"success": False, "message": "잘못된 사업자 번호"}

    return HttpResponse(json.dumps(r), content_type="application/json")

 

 

해당 로직만 짤라 냈다 /ㅁ/

 

디펜던시는 requests 를 이용한다.

 

다만 홈텍스니깐.. 너무 마구 날리진 말자 ㅠㅠ