Herramientas de usuario

Herramientas del sitio


airbnb:recetas

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
Próxima revisiónAmbos lados, revisión siguiente
airbnb:recetas [2018/04/15 18:24] numerotecaairbnb:recetas [2018/09/26 11:53] – [D3] numeroteca
Línea 1: Línea 1:
-====== Recetas ======+[[:airbnb|Efecto Airbnb]] > Recetas 
 + 
 +====== Recetas y manuales ======
  
 Esta página recoge diferentes recetas y scripts para facilitar el análisis en diferentes lenguages y herramientas. Esta página recoge diferentes recetas y scripts para facilitar el análisis en diferentes lenguages y herramientas.
 +
 +===== Documentación tipo =====
 +
 +Para documentar una pregunta que aún no esté en wiki hay que crear una nueva página y se puede copiar la estructura de documentación de la siguiente plantilla: [[:documentacion-tipo]]
 +
 +===== Preguntas y manuales  =====
 + 
 +Este es un listado de preguntas con sus manuales correspondientes para analizar y producir visualizaciones sobre datos de Airbnb que se han ido desarrollando en los diferentes talleres de Efecto Airbnb:
 +
 +  * [[:como-se-concentra-la-oferta-por-barrios-de-airbnb|¿Cómo se concentra la oferta por barrios de Airbnb?]] Dificultad //ALTA//. Manual Completo. Resultados: sí.
 +  * [[:airbnb:pregunta:reparto-airbnb-propietarios|¿Cómo está repartida la propiedad de los pisos de Airbnb?]]. Dificultad //FÁCIL//. Manual: Completo. Resultados: sí. 
 +  * [[:airbnb:pregunta:anuncios-legales-ilegales|¿Cuántos anuncios en Airbnb son "legales"? ¿Cuántos ilegales, no legales o alegales? ¿Cuál es la distribución de ambos tipos por barrios?]] Dificultad //ALTA//.Manual Completo. Resultados: sí.
 +  * [[:airbnb:pregunta:nube-palabras-anuncios|¿Cómo se anuncian los pisos? Un análisis de las palabras usadas]]. Dificultad MEDIA. Manual: Completo. Resultados: sí.
 +  * [[:cuales-son-las-variaciones-de-precios-por-plaza|Variaciones espaciales de precios por plaza]] Dificultad MEDIA-ALTA. Manual: Completo. Resultados: sí.
 +  * [[airbnb:pregunta:que-anuncios-estan-activos|¿Qué anuncios están activos?]]. Manual: en proceso.
 +  * [[airbnb:pregunta:infraestructura-hotelera-y-airbnb|¿Qué relación hay entre infraestructura hotelera tradicional y AirBnB?]]
 +  * [[airbnb:pregunta:analisis-vut-ordenanza-donostia|¿Cual es el estado de tramitación de las viviendas de uso turístico en San Sebastián - Donostia con la nueva ordenanza?]]
 +
 +Por completar:
 +
 +  * [[https://github.com/montera34/airbnbeuskadi/wiki/%C2%BFQu%C3%A9-cantidad-de-anuncios-Airbnb-son-pisos-completos%3F-%C2%BFCu%C3%A1ntos-son-habitaciones%3F|¿Qué cantidad de anuncios Airbnb son pisos completos? ¿Cuántos son habitaciones?]]. Dificultad FÁCIL. Manual No realizado. Resultados: sí. 
 +  * [[https://github.com/montera34/airbnbeuskadi/wiki/%C2%BFQu%C3%A9-porcentaje-del-total-de-plazas-de-alojamiento-tur%C3%ADstico-no-est%C3%A1n-%22reguladas%22%3F-%C2%BFQu%C3%A9-cantidad-de-alojamientos-tur%C3%ADsticos-son-pisos-Airbnb%3F|¿Qué porcentaje del total de plazas de alojamiento turístico no están "reguladas"? ¿Qué cantidad de alojamientos turísticos son pisos Airbnb?]]. Dificultad ALTA. Manual No realizado. Resultados: en parte. 
 +  * [[https://github.com/montera34/airbnbeuskadi/wiki/%C2%BFCu%C3%A1nta-actividad-hay-en-Airbnb-en-Donosti%3F-%C2%BFCu%C3%A1ntas-reservas-hay-en-Airbnb-durante-un-a%C3%B1o%3F-%C2%BFCu%C3%A1l-ha-sido-la-evoluci%C3%B3n-durante-los-10-%C3%BAltimos-a%C3%B1os%3F|¿Cuánta actividad hay en Airbnb en Donosti? ¿Cuántas reservas hay en Airbnb durante un año? ¿Cuál ha sido la evolución durante los 10 últimos años?]]. Dificultad MEDIA/ALTA. Manual No realizado. Resultados: no.
 +  * [[https://github.com/montera34/airbnbeuskadi/wiki/Comparativa-entre-capitales-vascas.-Comparativa-con-otras-ciudades-(Madrid,-Barcelona-y-Mallorca)|Comparativa entre capitales vascas. Comparativa con otras ciudades (Madrid, Barcelona y Mallorca)]]. Dificultad MEDIA. Manual No realizado. Resultados: en parte.
 +  * [[airbnb:pregunta:evolucion-poblacion-y-aumento-anuncios-airbnb|¿Existe una relación entre el aumento de apartamentos Airbnb y la evolución de la población en Madrid?]]
 +
 +
 +===== D3 =====
 +
 +Cómo realizar un cartograma para representar dos variables: tamaño de las áreas en función del número de viviendas y color en función de ratio de número de anuncios de Airbnb por número de viviendas:
 +  * Código https://github.com/montera34/airbnb.efecto/blob/master/pamplona/cartograms/index.html
 +  * Visualización: https://lab.montera34.com/airbnb/pamplona/cartograms/index.html
  
 ===== R ===== ===== R =====
Línea 7: Línea 41:
 Desde __Montera34__ hemos preparado 2 scripts de R para procesar los datos: Desde __Montera34__ hemos preparado 2 scripts de R para procesar los datos:
  
-  * [[https://github.com/montera34/airbnbeuskadi/blob/master/prepare-segmented-files.R|prepare-segmented-files.R]] para procesar los datos y generar archivos más manejables. Genera archivos .csv y .tsv. Lo que hace este script es "partir" los datos de Airbnb en Euskadi en cómodos .tsv y csv por ciudades. También selecciona ciertas columnas para tener archivos más ligeros, de ahí el sufijo "_simple"+  * [[https://github.com/montera34/airbnbeuskadi/blob/master/prepare-segmented-files.R|prepare-segmented-files.R]] para **procesar los datos y generar archivos más manejables**. Genera archivos .csv y .tsv. Lo que hace este script es "partir" los datos de Airbnb en Euskadi en cómodos .tsv y csv por ciudades. También selecciona ciertas columnas para tener archivos más ligeros, de ahí el sufijo "_simple"
- +  * [[https://github.com/montera34/airbnb.madrid.analisis/blob/master/analisis/comparar-bases-datos.Rmd|Este script generado con Rmarkdown]] está pensado para **comparar dos bases de datos de Airbnb** y poder evaluar los métodos de scraping. [[airbnb:recetas:comparar-bases-datos|Más información sobre el script]]. 
-  * [[https://github.com/montera34/airbnbeuskadi/blob/master/analisis/montera34/airbnb-informe-ciudad.Rmd|airbnb-informe-ciudad.Rmd]] para generar informes de las ciudades con múltiples gráficos. El archivo tiene una variable que permite cambiar el nombre del municipio sobre la que se genera el informe. Genera artchivos .html con knitr.+  * [[https://github.com/montera34/airbnbeuskadi/blob/master/analisis/montera34/airbnb-informe-ciudad.Rmd|airbnb-informe-ciudad.Rmd]] para **generar informes de las ciudades con múltiples gráficos**. El archivo tiene una variable que permite cambiar el nombre del municipio sobre la que se genera el informe. Genera artchivos .html con knitr.
  
 Los informes no están muy depurados (hay muchas gráficas no del todo útiles) y son mejorables, pero son una buena base de la que partir. Y sobre todo ¡se producen automatizadamente! Los informes no están muy depurados (hay muchas gráficas no del todo útiles) y son mejorables, pero son una buena base de la que partir. Y sobre todo ¡se producen automatizadamente!
Línea 21: Línea 55:
 Desde Terraferida [[https://github.com/montera34/airbnbeuskadi/tree/master/analisis/terraferida|han generado una serie de scripts de R]] para analizar datos de Airbnb y Homeaway. Desde Terraferida [[https://github.com/montera34/airbnbeuskadi/tree/master/analisis/terraferida|han generado una serie de scripts de R]] para analizar datos de Airbnb y Homeaway.
  
 +===== Python =====
 +
 +==== Scraping: obtiene info a partir de listado de id de hosts en Airbnb ====
 +
 +Un script para scrapear una lista de usuarios de Airbnb basado en sus id:
 +
 +<code python>
 +import csv
 +import urllib2
 +from bs4 import BeautifulSoup
 +
 +outputpath = "airbnbusers.csv"
 +hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
 +       'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
 +       'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
 +       'Accept-Encoding': 'none',
 +       'Accept-Language': 'en-US,en;q=0.8', # cambia idioma 'Accept-Language': 'es-ES,es;q=0.8'
 +       'Connection': 'keep-alive'}
 +
 +with open(outputpath, "w") as outfile:
 +
 +  writer = csv.writer(outfile)
 +  for counter in [102947901,3566146,54310958,143666717]: # cambia la lista de usuarios
 +
 +    url = "https://www.airbnb.com/users/show/"+str(counter)
 +    
 +    print url
 + # Get URL
 +    response = urllib2.Request(url, headers=hdr)
 +    pagedata = urllib2.urlopen(response)
 +    html = pagedata.read()
 +    # Get links
 +    soup = BeautifulSoup(html, "html.parser")
 +    # boxes = soup.select(".news-body")
 +    title = soup.select("h1")[0].get_text().encode('utf-8').strip()
 +    since = soup.select(".text-normal")[0].get_text().encode('utf-8').strip()
 +    review = soup.select("#reviews h2")[0].get_text().encode('utf-8').strip()
 +    review = review.translate(None, 'Reviews\n(').translate(None, ')')
 +    desc= soup.select("p")[0].get_text().encode('utf-8').strip()
 +    print counter
 +    print title   
 +    print since
 +    print review 
 +    print desc
 +    writer.writerow([counter,title,since,review,desc])
 +</code>
 +
 +==== Scraping: obtiene info a partir de listado de id de listings en Airbnb ====
 +
 +<code python>
 +import csv
 +import urllib2
 +from bs4 import BeautifulSoup
 +
 +outputpath = "airbnblistings.csv"
 +hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
 +       'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
 +       'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
 +       'Accept-Encoding': 'none',
 +       'Accept-Language': 'en-US,en;q=0.8', #cambia idioma 'Accept-Language': 'es-ES,es;q=0.8'
 +       'Connection': 'keep-alive'}
 +
 +count=0
 +with open(outputpath, "w") as outfile:
 +
 +  writer = csv.writer(outfile)
 +  for counter in [23321245,20407971,12163858]: # incluye aquí la lista de id de listings completa
 +   count +=1
 +    print count
 +    url = "https://www.airbnb.com/rooms/"+str(counter)
 +    
 +    print url
 +
 +    try:
 +      print "try1"
 +      # Get URL
 +      response = urllib2.Request(url, headers=hdr)
 +      pagedata = urllib2.urlopen(response)
 +      html = pagedata.read()
 +      # Get links
 +      soup = BeautifulSoup(html, "html.parser")
 +    except:
 +      print "except1"
 +
 +    try:
 +      print "try2"
 +      nreviews = soup.select("#reviews ._1vbkutid")[0].get_text().encode('utf-8').strip()
 +      nreviews = nreviews.translate(None, ' Reviews').encode('utf-8').strip()
 +      lastreview = soup.select("#reviews ._hylizj6")[0].get_text().encode('utf-8').strip()
 +    except:
 +      print "except2"
 +    
 +    print url  
 +    print nreviews 
 +    print lastreview
 +    writer.writerow([counter,nreviews,lastreview])
 +</code>
  
 ===== SQL ===== ===== SQL =====
airbnb/recetas.txt · Última modificación: 2019/03/21 23:43 por numeroteca