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
airbnb:recetas [2018/04/16 12:20] – [Recetas] numerotecaairbnb:recetas [2019/03/21 23:43] (actual) – [Preguntas y manuales] numeroteca
Línea 1: Línea 1:
 [[:airbnb|Efecto Airbnb]] > Recetas [[:airbnb|Efecto Airbnb]] > Recetas
  
-[[:airbnb|Efecto Airbnb]] > Recetas +====== Recetas y manuales ======
- +
-====== Recetas ======+
  
 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.
  
-==== Preguntas y manuales  ====+===== 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: 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:
Línea 16: Línea 18:
   * [[:airbnb:pregunta:nube-palabras-anuncios|¿Cómo se anuncian los pisos? Un análisis de las palabras usadas]]. Dificultad MEDIA. 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í.   * [[: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: Por completar:
  
 +  * [[airbnb:pregunta:tasa-de-ocupacion-airbnb|¿Cual es la tasa de ocupación de los anuncios de Airbnb en una ciudad?]]
 +  * [[airbnb:pregunta:eliminados|¿Cuántos y qué pisos se eliminan (dejan de estar publicados) de un mes a otro?]]
   * [[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-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%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/%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.   +  * [[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 29: Línea 44:
  
   * [[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/airbnbeuskadi/blob/master/analisis/montera34/compare-datasets.Rmd|Este script generado con Rmarkdown]] está pensado para **comparar dos bases de datos de Airbnb** y poder evaluar los métodos de scraping.+  * [[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.
  
Línea 42: Línea 57:
 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.1523874011.txt.gz · Última modificación: 2018/04/16 12:20 por numeroteca