YJWANG

[Python] 부동산 크롤러-1 본문

90.Programming

[Python] 부동산 크롤러-1

왕영주 2020. 12. 21. 23:13

naver 부동산 크롤러는 bot을 차단해놓아서 user agent 값을 지정하여 진행했다.
json으로 reponse되기에 json과 requests 모듈을 사용했다.

향후 Slack-bot으로 개발하여 slash command로 오갈 수 있도록 하고자한다.

golang으로 하다가 python으로 하니 내겐 더 간편하다.
go rutine 및 system program 등 golang이 이점이 있는 부분을 내가 사용하지 못하고 내가 작성하는 자동화 툴 같은 경우 큰 성능을 필요로 하지 않기에 python이 내게는 맞는 것 같다. 다음에 golang이 필요로 하는 경우에 또 공부해서 잘 적용해 보았으면 좋겠다

import requests, json

def crawler(url):
    headers = {'User-Agent' : 'yjwang'}
    params = {'tradeType':'B1'}

    resp = requests.get(url, headers = headers)
    raw = resp.json()

    count = 0

    while count < len(raw['articleList']):
        # 항목별로 json value가 없는 경우가 있어 예외 처리 진행
        try:
            print("단지 이름 : ", raw['articleList'][count]['articleName'])
            print("매물 종류 : ", raw['articleList'][count]['tradeTypeName'])
            print("층 : ", raw['articleList'][count]['floorInfo'])
            print("금액 : ", raw['articleList'][count]['dealOrWarrantPrc'])
            print("평수 : ", str(raw['articleList'][count]['area2'])+" m**2")
            print("향 : ", raw['articleList'][count]['direction'])
            print("매물 일자 : ", raw['articleList'][count]['articleConfirmYmd'])
            print("설명 : ", raw['articleList'][count]['articleFeatureDesc'])
            print("태그 : ", raw['articleList'][count]['tagList'])
            print("동 : ", raw['articleList'][count]['buildingName'])
            print("링크 : ", raw['articleList'][count]['cpPcArticleUrl'])   
            print("이미지 : ","https://landthumb-phinf.pstatic.net"+raw['articleList'][count]['representativeImgUrl'])
        except:
            pass    

        print("\n")
        count += 1

urls = [
    # 신나무실
    'https://new.land.naver.com/api/articles/complex/2588?realEstateType=APT%3AABYG%3AJGC&tradeType=B1&tag=%3A%3A%3A%3A%3A%3A%3A%3A&rentPriceMin=0&rentPriceMax=900000000&priceMin=0&priceMax=33000&areaMin=0&areaMax=900000000&oldBuildYears&recentlyBuildYears&minHouseHoldCount&maxHouseHoldCount&showArticle=false&sameAddressGroup=true&minMaintenanceCost&maxMaintenanceCost&priceType=RETAIL&directions=&page=1&complexNo=2588&buildingNos=&areaNos=&type=list&order=rank',
    # 벽적골 8단지 주공
    'https://new.land.naver.com/api/articles/complex/3988?realEstateType=APT%3AABYG%3AJGC&tradeType=B1&tag=%3A%3A%3A%3A%3A%3A%3A%3A&rentPriceMin=0&rentPriceMax=900000000&priceMin=0&priceMax=33000&areaMin=0&areaMax=900000000&oldBuildYears&recentlyBuildYears&minHouseHoldCount&maxHouseHoldCount&showArticle=false&sameAddressGroup=true&minMaintenanceCost&maxMaintenanceCost&priceType=RETAIL&directions=&page=1&complexNo=3988&buildingNos=&areaNos=1%3A3%3A2&type=list&order=rank',
    # 벽적골 롯데
    'https://new.land.naver.com/api/articles/complex/3638?realEstateType=APT%3AABYG%3AJGC&tradeType=B1&tag=%3A%3A%3A%3A%3A%3A%3A%3A&rentPriceMin=0&rentPriceMax=900000000&priceMin=0&priceMax=33000&areaMin=0&areaMax=900000000&oldBuildYears&recentlyBuildYears&minHouseHoldCount&maxHouseHoldCount&showArticle=false&sameAddressGroup=true&minMaintenanceCost&maxMaintenanceCost&priceType=RETAIL&directions=&page=1&complexNo=3638&buildingNos=&areaNos=3&type=list&order=rank',
    # 벽적골 우성
    'https://new.land.naver.com/api/articles/complex/12045?realEstateType=APT%3AABYG%3AJGC&tradeType=B1&tag=%3A%3A%3A%3A%3A%3A%3A%3A&rentPriceMin=0&rentPriceMax=900000000&priceMin=0&priceMax=33000&areaMin=0&areaMax=900000000&oldBuildYears&recentlyBuildYears&minHouseHoldCount&maxHouseHoldCount&showArticle=false&sameAddressGroup=true&minMaintenanceCost&maxMaintenanceCost&priceType=RETAIL&directions=&page=1&complexNo=12045&buildingNos=&areaNos=2%3A1&type=list&order=rank'
]

for url in urls:
    crawler(url)
반응형