创建一个与现有列区域对应的子区域列的函数
这里有一个列表
bareas = ['Hosa road', 'Agara', 'Koramangala 4th block', 'Ali Asker road', 'Singasandra']
(这个列表比较长,所以这里只列出了一些项目)。我想创建一个新的列,叫做 sub_area
,并且 用居住地所属的子区域名称来标记它。
这个 网页 上有关于哪个 居住地 属于哪个 子区域 的详细信息。
总共有8个子区域:
BOMMANAHALLI, DASARAHALLI, MAHADEVAPURA, BYATARAYANAPURA, WEST, EAST, SOUTH, RR_NAGARA
。
我还是个初学者,所以如果问题不够清楚,请多多包涵。
i have tried the following code
import requests
from bs4 import BeautifulSoup
import pandas as pd
df2015 = pd.read_csv('https://raw.githubusercontent.com/the-curious-analyst/Sem2NITDSProject/main/tanker-water-data-2015.csv', usecols = [*range(0,9,1)])
bareas = list(df2015['Area where apartment is situated'].unique())
zone_list = []
for area in bareas:
url = "https://kgis.ksrsac.in/Bbmpgis/"
esri-search__form
data = {'search': area, 'submit': 'Find Address or Place'}
response = requests.post(url, data=data)
soup = BeautifulSoup(response.content, 'html.parser')
zone_element = soup.find('div', class_='lblzn')
if zone_element:
zone_list.append(zone_element.text)
else:
zone_list.append(None)
print(zone_list)
1 个回答
0
试试这个:
import requests
params = {
"SingleLine": "Hosa road",
"location": '{"spatialReference":{"wkid":102100},"x":8646979.114049532,"y":1449843.5729579679}',
"maxLocations": "6",
"outFields": "Addr_type,Match_addr,StAddr,City",
# "outSR": '{"latestWkid":3857,"wkid":102100}',
"f": "json",
}
url = "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/findAddressCandidates"
bareas = ["Hosa road", "Koramangala 4th block", "Ali Asker road", "Singasandra"]
for a in bareas:
params["SingleLine"] = a
data = requests.get(url, params=params).json()
# print(data)
print(a)
print("-" * 80)
for c in data["candidates"]:
print(c["address"])
print()
输出结果是:
Hosa road
--------------------------------------------------------------------------------
Hosa Road, Kaikondrahalli, Bengaluru, Karnataka, 560035
Hosa Road, Ambalipura, Bengaluru, Karnataka, 560102
Hosa Road, Kasavanahalli, Bengaluru, Karnataka, 560035
Hosa Road, Kasavanahalli, Bengaluru, Karnataka, 560100
Hosa Road, Rayasandra, Bengaluru, Karnataka, 560100
Hosa Road, Rayasandra, Bengaluru, Karnataka, 560035
Koramangala 4th block
--------------------------------------------------------------------------------
4th Block, Koramangala, Bengaluru, Karnataka
Koramangala Ring Road, Koramangala, Bengaluru, Karnataka, 560095
Koramangala Ring Road, Koramangala, Bengaluru, Karnataka, 560034
Ali Asker road
--------------------------------------------------------------------------------
Ali Asker Road, Shivajinagar, Bengaluru, Karnataka, 560001
Ali Asker Road, Vasanth Nagar, Bengaluru, Karnataka, 560001
Singasandra
--------------------------------------------------------------------------------
Singasandra, Bengaluru, Karnataka
Singasandra, Anekal Sub-District, Bengaluru, Karnataka
Singasandra, Kanakapura, Ramanagara, Karnataka
Singasandra, Chintamani, Chikkaballapura, Karnataka
Singasandra, Turuvekere, Tumakuru, Karnataka
Singasandra, Ramanagara, Karnataka