일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ceph
- i3
- ubuntu
- kolla
- libvirt
- ceph-ansible
- repository
- kolla-ansible
- Kubeflow
- yum
- Kubernetes
- golang
- nfs-provisioner
- Linux
- cloud-init
- HTML
- Ansible
- Octavia
- grafana-loki
- Docker
- terraform
- KVM
- Arch
- archlinux
- cephadm
- awx
- OpenStack
- port open
- k8s
- pacman
Archives
- Today
- Total
YJWANG
[Python] 부동산 크롤러-1 본문
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)
반응형