RESTful Parallel Scraping API for Immobiliare.it data
author: Niccolò Salvini date: Last update: 14 gennaio, 2021
The following opne REST API provides a way to kindly collect
Immobiliare.it data from Real Estate
rental and selling market over a various range of cities. The API
framework is R Plumber which calls
Parallelized (multisession parallel back end with {future}
+{furrr}
) scraping functions. The idea is to reverse engineer
immobiliare.it url semantic and then
calling scraping functions on the targeted url. The API supprots both
client and server side necessities. The former can be sure to send
considerably fast requests to immobiliare.it server, as well as be
comfortable of not getting rejected with rotation of User Agents and
“Fail Dealers” like possibly()
. The latter can rely on calibrated
delayed request rates based on {robotstxt}
requirements. Plumber API
framework decors scraping codes allowing to make it endpoints and
passing functional arguements as API arguments. Code is then
containerzied through Docker and orchestarted with Compose. The
service load balances requests and grants secure access with NGINX
reverse proxy server. Then the software environment is hosted into EC2
AWS free tier Ubuntu Machine.
API Address:
15.161.14.100
SWAGGER UI FOR OAS3
15.161.14.100/__docs__/
- container orchestration with a scheduler 💹
- Mongodb ATLAS cluster connection ❌
simulation conducted on foreach
with doMC
parallel back end vs
furrr
(future
and purrr
Tidy evaluation) on local machine
Microsoft Windows 10 Home with Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz,
2201 Mhz, 6 cores, 12 logical processors. On x axis the number of urls
processed, on y axis run time:
ù
- Get FAST real-time data, 6 predictors: title, price, num of rooms, sqmeter, primarykey, href
GET */fastscrape
@param city [chr string] the city you are interested in (e.g. "roma", "milano", "firenze"--> lowercase, without accent) REQUIRED
@param npages [positive integer] number of pages to scrape, default = 10, min = 2, max = 300 REQUIRED
@param type [chr string] "affitto" = rents, "vendita" = sell REQUIRED
@param thesis [boolean] TRUE for data used to perform thesis analysis REQUIRED
@param macrozone [chr string] avail: Roma, Firenze, Milano, Torino; e.g. "fiera", "centro", "bellariva", "parioli" NOT REQUIRED
content-type: application/json
- Get the complete set of covariates (52) from each single links, takes a while
GET */completescrape
@param city [chr string] the city you are interested in (e.g. "roma", "milano", "firenze"--> lowercase, without accent) REQUIRED
@param npages [positive integer] number of pages to scrape, default = 10, min = 2, max = 300 REQUIRED
@param type [chr string] "affitto" = rents, "vendita" = sell REQUIRED
@param thesis [boolean] TRUE for data used in thesis analysis REQUIRED
@param macrozone [chr string] avail: Roma, Firenze, Milano, Torino; e.g. "fiera", "centro", "bellariva", "parioli" NOT REQUIRED
content-type: application/json
- / fastscrape : city = “milan”, npages = 10, type = “affitto”, thesis = FALSE, macrozone = “fiera”, “centro”
http://15.161.14.100/fastscrape/10/milano/affitto/false?macrozone=fiera¯ozone=centro
{
"title": "Trilocale Parco delle Basiliche, Milano",
"monthlyprice": "1200",
"nroom": "3",
"sqmeter": "80",
"href": "https://www.immobiliare.it/annunci/84032066/"
},
{
"title": "Monolocale via Morigi, Carrobbio, Milano",
"monthlyprice": "1000",
"nroom": "1",
"sqmeter": "45",
"href": "https://www.immobiliare.it/annunci/84029996/"
},
{
"title": "Bilocale via Amedei, Carrobbio, Milano",
"monthlyprice": "2080",
"nroom": "2",
"sqmeter": "90",
"href": "https://www.immobiliare.it/annunci/84029006/"
},
.
.
.
- / fastscrape : city = “firenze”, npages = 15, type = “vendita”, thesis = FALSE
http://15.161.14.100/fastscrape/15/firenze/vendita/false
{
"title": "Trilocale via Andrea del Sarto 65, Coverciano, Firenze",
"monthlyprice": "245000",
"nroom": "3",
"sqmeter": "50",
"href": "https://www.immobiliare.it/annunci/84030408/"
},
{
"title": "Trilocale via dei Serragli 3, Santo Spirito, Firenze",
"monthlyprice": "610000",
"nroom": "3",
"sqmeter": "110",
"href": "https://www.immobiliare.it/annunci/84034600/"
},
{
"title": "Bilocale via della Cernaia, Leopoldo - Vittorio Emanuele - Statuto, Firenze",
"monthlyprice": "225000",
"nroom": "2",
"sqmeter": "56",
"href": "https://www.immobiliare.it/annunci/84025152/"
},
.
.
.
- / completescrape : npages = 10, city = “milan”, type = “affitto”, .thesis = FALSE
http://15.161.14.100/completescrape/10/milano/affitto/false
{
"ID": "83286087",
"LAT": 45.4916,
"LONG": 9.1617,
"LOCATION": "via francesco caracciolo 63",
"CONDOM": "145",
"BUILDAGE": "1920",
"FLOOR": "4° piano, con ascensore",
"INDIVSAPT": "Appartamento",
"LOCALI": "2 (1 camera da letto, 1 altro), 1 bagno, cucina angolo cottura",
"STATUS": "Buono / Abitabile",
"HEATING": "Centralizzato, a radiatori, alimentato a metano",
"AC": "Autonomo, freddo",
"PUB_DATE": "2020-10-13",
"CATASTINFO": "Classe A/3, rendita € 343",
"APTCHAR": "- - porta blindata- - - esposizione interna- - - armadio a muro- - - balcone- - - impianto tv singolo- - - arredato- - - infissi esterni in doppio vetro / pvc- -",
"PHOTOSNUM": "20",
"AGE": "Sigest S.p.A.",
"CONTR": "Affitto",
"TOTPIANI": "6 piani",
"REVIEW": "All'interno di uno stabile signorile risalente ai primi anni del '900 e in ordine nelle parti comuni, proponiamo al piano quarto, un ampio bilocale con doppi balconi e silenzioso affaccio nel cortile interno. L'unità immobiliare è stata recentemente ristrutturata e si compone di ingresso, spazioso soggiorno con angolo cottura, camera da letto matrimoniale e bagno finestrato. L'appartamento viene consegnato completo di tutti gli arredi e aria condizionata in ogni ambiente. Posto bici all'interno del condominio. Lo stabile è inserito in un grande viale completamente alberato e in un contesto ricco di servizi - immediate vicinanze con M5 Cenisio e qualsivoglia mezzo di superficie di comodo collegamento con il centro.",
"METRATURA": {
"totalMainSurface": "52,0 m²",
"constitution": "Abitazione",
"floor": "4",
"surface": "52,0 m²",
"percentage": "100 %",
"surfaceType": "Principale",
"commercialSurface": "52,0 m²"
},
"HASMULTI": true,
"LOWRDPRICE": {},
"NROOMS": "2",
"PRICE": "1000",
"SQFEET": "52",
"TITLE": "Bilocale via Francesco Caracciolo 63, Milano"
},
{
"ID": "83288761",
"LAT": 45.4728,
"LONG": 9.2331,
"LOCATION": "via inama 17",
"CONDOM": "125",
"BUILDAGE": "1985",
"FLOOR": "1° piano, con ascensore",
"INDIVSAPT": "Appartamento",
"LOCALI": "3 (2 camere da letto, 1 altro), 1 bagno, cucina abitabile",
"STATUS": "Ottimo / Ristrutturato",
"HEATING": "Centralizzato, a radiatori, alimentato a gas",
"AC": "Predisposizione impianto",
"PUB_DATE": "2020-10-13",
"CATASTINFO": "Classe A/3, rendita € 0",
"APTCHAR": "- - cancello elettrico- - - fibra ottica- - - videocitofono- - - porta blindata- - - balcone- - - portiere intera giornata- - - impianto tv centralizzato- - - parzialmente arredato- - - infissi esterni in doppio vetro / metallo- - - esposizione doppia- -",
"PHOTOSNUM": "20",
"AGE": "IMMOBILIARE SANTALFREDO",
"CONTR": "Affitto",
"TOTPIANI": "5 piani",
"REVIEW": "INTROVABILE APPENA RISTRUTTURATO, APPARTAMENTO TRILOCALE IN AFFITTO, CON ARREDO NUOVO.\nLa casa si trova in Via Inama, 17, Città Studi, all'interno di un bel palazzo, con servizio di portineria. \n L' appartamento è un trilocale con una metratura interna di 70 mq circa, composto da ingresso, cucina abitabile con disimpegno per lavatrice e lavabo, balconcino, due camere matrimoniali, bagno con doccia e utilissimo locale ripostiglio. \nLa casa viene locata con la cucina arredata, completa di elettrodomestici, tra cui la lavastoviglie e la lavatrice. Il bagno è completo di mobilio, specchio con luci, sanitari, doccia in cristallo e termo arredo. Due camere da letto, di cui una, sarà arredata con armadiature e letto matrimoniale. \nDETTAGLI: Ristrutturazione ultimata ad agosto 2020. Consegna del mobilio prevista a breve. Il riscaldamento è centralizzato; i serramenti hanno tutti i doppi vetri e l'apertura a vasistas, il serramento del bagno ha la basculante elettrica. L'esposizione dell' appartamento è doppia, in generale gode di una buona visuale e gli ambienti risultano essere piacevolmente luminosi e ben areati. \nSpese condominiali comprensive di riscaldamento, euro 1.500 /anno (prima della ristrutturazione). \nDesideri fissare un appuntamento o hai qualche domanda di approfondimento? Siamo disponibili al numero 0396908137 Immobiliare Santalfredo.",
"METRATURA": {
"totalMainSurface": "70,0 m²",
"constitution": "Abitazione",
"floor": "1",
"surface": "70,0 m²",
"percentage": "100 %",
"surfaceType": "Principale",
"commercialSurface": "70,0 m²"
},
.
.
.