🪧 About  
home
[출판사] 전기장판  
home

[python-크롤링] 직방에서 특정 조건의 부동산 매물 크롤링하기

글쓴이
생성일
2019/06/14
카테고리
태그
5 more properties
직방에서 지역과 조건을 설정했을 때, 목록에 뜨는 각 매물들의 세부정보를 불러오는 코드입니다. 부동산 서비스들이 전부 매물의 세부정보(세부설명)에 대한 검색이나 손쉬운 열람을 허용하지 않아서 만들었습니다.
자세한 설명은 추후 시간이 날 때 하도록 하겠습니다.
아래는 코드 전문입니다.
불필요한 코드들이 중간에 섞여 있습니다.

전체코드

# -*- coding: utf-8 -*- import requests import json import pandas as pd from pandas.io.json import json_normalize from urllib.request import Request, urlopen from bs4 import BeautifulSoup import numpy as np import time from datetime import datetime # %% 원하는 지역에서 부동산 추출 자동화 header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.220 Whale/1.3.51.7 Safari/537.36', 'Referer': '<https://m.land.naver.com/>' } url = '<https://apis.zigbang.com/v2/items?domain=zigbang&zoom=14&sales_type_in=%EC%A0%84%EC%84%B8&deposit_lteq=10000&rent_lteq=5&new_villa=true&geohash=wyd>' resp = requests.get(url) data = json.loads(resp.text) json_normalize(data) json_normalize(data).loc[0, 'clusters'] list_all = pd.DataFrame(json_normalize(data).loc[0, 'items']) df_want = pd.DataFrame() for item in list_all['item_id'].values.tolist(): item_id = str(item) url_item = '<https://apis.zigbang.com/v1/items/>' + item_id + '/read?domain=zigbang&uuid=b68e3880-c6cd-11e9-ba12-9ba7629b771c' req = Request(url_item, headers=header) res = urlopen(req) html = res.read() bs = BeautifulSoup(html, 'html.parser') df_want = df_want.append(pd.DataFrame(data={'item_id':[item], '매물소개':[bs]})) df = pd.merge(df_want, list_all, on='item_id', how='left') # %% 원하는 조건만 남기기 df['매물소개'] = df['매물소개'].astype('str') df_want = df['매물소개'].apply(lambda d: d.contains('100' or '중기청' or '중소기업' or '인천', na=False)) df_want = df[df.매물소개.str.contains('중기청' or '중소기업', na=False)] df_want['매물주소'] = df_want['item_id'].astype('int').astype('str').apply(lambda d: '<https://zigbang.com/home/villa/items/>' + d) # %% 저장하기 now = datetime.now() now_str = str('{}{}{}').format(now.year, now.month, now.day) df_want.to_excel('S:/내 드라이브/09_git/Py-Projects/0004/data/estate_zigbang(' + now_str + ').xlsx', sheet_name='Sheet1', header=True, index=False)
Plain Text
Copyright ⓒ 2022 SADAM Media All Rights Reserved.
사담미디어(SADAM Media) / 사업자번호: 703-37-00838