有一个清单
bareas = ['Hosa road', 'Koramangala 4th block', 'Ali Asker road', 'Singasandra']
(它的列表相当长,所以只在这里添加一些项目)。我想创建一个函数,以便每个项目都可以循环通过网页中的搜索栏 -“https://kgis.ksrsac.in”并返回与每个 barea-search-item 对应的区域名称作为列表。我是初学者,如果问题不清楚,请原谅。
import requests
from bs4 import BeautifulSoup
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)
尝试:
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