Je suis à la recherche de scrap toute la carte de France.

J'ai un problème :

1 - Je suis limité par le zoom de la carte

import requests




url ='https://www.iadfrance.fr/agent-search-location?southwestlat=47.0270782&southwestlng=-2.1560669&northeastlat=47.4930807&northeastlng=-1.0093689'
jsonObj = requests.get(url).json()
emails = jsonObj['agents']
#print (emails)


for agent in emails: 
    email = agent['email']
    print(email)

Je vous remercie

0
Neeko 13 mars 2019 à 14:26

2 réponses

Meilleure réponse

Vous devrez utiliser les paramètres de longitude et de latitude dans la demande de "zoom arrière"

Vous pouvez soit les modifier manuellement, soit je suis un fan de osmnx. Vous pouvez l'utiliser pour obtenir les limites de différentes zones, puis définir un rayon en mètres pour créer votre zone de délimitation :

import requests
import osmnx as ox
import os

os.environ["PROJ_LIB"] = "C:/Users/xxxxxxx/AppData/Local/Continuum/anaconda3/Library/share"; #fixr

# Get a boundary box of a city/place/address
city = ox.gdf_from_place('Paris, France')

# Distance to make boundary from center in meters
# Essentially allows you to zoom out
distance = 300000

# Get centroid of that city/place boundary box
point = ( city['geometry'].centroid.x.iloc[0], city['geometry'].centroid.y.iloc[0] )

# Get a new boundary box a certain distance in North, South, East, West directions for x meters
boundary = ox.bbox_from_point(point, distance=distance , project_utm=False, return_crs=False)

sw_lat = boundary[3]
sw_lng = boundary[0]*-1
ne_lat = boundary[2]
ne_lng = boundary[1]*-1

# website to scrape https://www.iadfrance.fr/trouver-un-conseiller

url ='https://www.iadfrance.fr/agent-search-location'

# Here is the coordinates from orginial post
#payload = {
#'southwestlat': '47.0270782',
#'southwestlng': '-2.1560669',
#'northeastlat': '47.4930807',
#'northeastlng': '-1.0093689'}


payload = {
'southwestlat': sw_lat,
'southwestlng': sw_lng,
'northeastlat': ne_lat,
'northeastlng': ne_lng}


jsonObj = requests.get(url, params=payload).json()
emails = jsonObj['agents']
#print (emails)


for agent in emails: 
    email = agent['email']
    print(email)
1
chitown88 13 mars 2019 à 15:26

Je trouve le bon chemin, je dois sortir des sentiers battus. J'ai défini 2 données géographiques manuellement dans une très très grande zone. (un en Atlantique et un autre en Russie). Ça marche !

import requests


url ='https://www.iadfrance.fr/agent-search-location?southwestlat=9.884462&southwestlng=-35.58398&northeastlat=68.714264&northeastlng=44.796407'
jsonObj = requests.get(url).json()
emails = jsonObj['agents']
#print (emails)


for agent in emails: 
    email = agent['email']
    print(email)
1
Neeko 13 mars 2019 à 13:44