用于创建一个列,其子区域与现有列中的区域相对应

问题描述 投票:0回答:1

有一个列表

bareas = ['Hosa road', 'Agara', 'Koramangala 4th block', 'Ali Asker road', 'Singasandra']

(这是一个相当长的列表,因此仅在此处添加一些项目)。我想创建一个名为“sub_area”的新列,并用住宅所属的子区域名称对其进行标记。网页“https://kgis.ksrsac.in”包含有关哪个住宅属于哪个分区的详细信息。我是初学者,如果问题不清楚,请原谅。

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)
python pandas web-scraping beautifulsoup python-requests
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
© www.soinside.com 2019 - 2024. All rights reserved.