import requests
import pandas as pd
addr = "망원동"
url = f"https://apis.zigbang.com/v2/search?leaseYn=N&q={addr}&serviceType=원룸"
response = requests.get(url)
data = response.json()["items"][0]
lat, lng = data["lat"], data["lng"] # 위도, 경도
lat, lng
%pip install geohash2
# 또는 !pip install geohash2
import geohash2
# precision이 커질수록 영역이 작아짐
geohash = geohash2.encode(lat, lng, precision=5)
geohash
파이썬에서는 한줄이 너무 길어질 때 \ (백슬래시)로 끊을 수가 있다
주의할 점은 백슬래시 뒤에 아무 문자도 없어야 한다는 것, 공백도 안됨
url = f"https://apis.zigbang.com/v2/items?deposit_gteq=0&domain=zigbang\
&geohash={geohash}&needHasNoFiltered=true&rent_gteq=0&sales_type_in=전세|월세\
&service_type_eq=원룸"
response = requests.get(url)
datas = response.json()["items"]
# len(datas), datas[0]
ids = [data["item_id"] for data in datas]
len(ids), ids[:5]
# 1000개 넘어가면 나눠서 수집해야 함
url = "https://apis.zigbang.com/v2/items/list"
params = {
"domain": "zigbang",
"withCoalition": "true",
"item_ids": ids
}
response = requests.post(url, params)
response
datas = response.json()["items"]
df = pd.DataFrame(datas)
df.tail(2)
columns = ["item_id", "sales_type", "deposit", "rent", "size_m2", "floor", "building_floor",
"address1", "manage_cost"]
filtered_column_df = df[columns]
filtered_column_df.tail(2)
result_df = filtered_column_df[filtered_column_df["address1"].str.contains("망원동")]
result_df = result_df.reset_index(drop=True)
result_df.tail(2)