Habrastatistics: explorando las secciones más y menos visitadas del sitio
Hola Habr.
В parte anterior El tráfico de Habr se analizó según los parámetros principales: el número de artículos, sus vistas y valoraciones. Sin embargo, la cuestión de la popularidad de las secciones del sitio quedó sin examinar. Se volvió interesante analizar esto con más detalle y encontrar los centros más populares e impopulares. Finalmente, analizaré el efecto geektimes con más detalle, terminando con una nueva selección de los mejores artículos basada en nuevos rankings.
Para aquellos que estén interesados en lo que pasó, la continuación está cortada.
Permítanme recordarles una vez más que las estadísticas y calificaciones no son oficiales, no tengo ninguna información privilegiada. Tampoco se garantiza que no cometí un error en alguna parte o que no me perdí algo. Pero aun así creo que resultó interesante. Comenzaremos primero con el código; aquellos que no estén interesados en esto pueden saltarse las primeras secciones.
Сбор данных
En la primera versión del analizador, sólo se tuvo en cuenta el número de visitas, comentarios y valoraciones de los artículos. Esto ya está bien, pero no te permite hacer consultas más complejas. Es hora de analizar las secciones temáticas del sitio, esto le permitirá realizar investigaciones bastante interesantes, por ejemplo, ver cómo ha cambiado la popularidad de la sección "C++" a lo largo de varios años.
El analizador de artículos ha sido mejorado, ahora devuelve los centros a los que pertenece el artículo, así como el apodo del autor y su calificación (aquí también se pueden hacer muchas cosas interesantes, pero eso vendrá más adelante). Los datos se guardan en un archivo csv similar a este:
2018-12-18T12:43Z,https://habr.com/ru/post/433550/,"Мессенджер Slack — причины выбора, косяки при внедрении и особенности сервиса, облегчающие жизнь",votes:7,votesplus:8,votesmin:1,bookmarks:32,
views:8300,comments:10,user:ReDisque,karma:5,subscribers:2,hubs:productpm+soft
...
Recibiremos una lista de los principales centros temáticos del sitio.
def get_as_str(link: str) -> Str:
try:
r = requests.get(link)
return Str(r.text)
except Exception as e:
return Str("")
def get_hubs():
hubs = []
for p in range(1, 12):
page_html = get_as_str("https://habr.com/ru/hubs/page%d/" % p)
# page_html = get_as_str("https://habr.com/ru/hubs/geektimes/page%d/" % p) # Geektimes
# page_html = get_as_str("https://habr.com/ru/hubs/develop/page%d/" % p) # Develop
# page_html = get_as_str("https://habr.com/ru/hubs/admin/page%d" % p) # Admin
for hub in page_html.split("media-obj media-obj_hub"):
info = Str(hub).find_between('"https://habr.com/ru/hub', 'list-snippet__tags')
if "*</span>" in info:
hub_name = info.find_between('/', '/"')
if len(hub_name) > 0 and len(hub_name) < 32:
hubs.append(hub_name)
print(hubs)
La función find_between y la clase Str seleccionan una cadena entre dos etiquetas, yo las usé más temprano. Los centros temáticos están marcados con un "*" para que se puedan resaltar fácilmente y también puedes descomentar las líneas correspondientes para obtener secciones de otras categorías.
El resultado de la función get_hubs es una lista bastante impresionante, que guardamos como un diccionario. Te presento específicamente la lista en su totalidad para que puedas estimar su volumen.
Los centros restantes se conservaron de la misma forma. Ahora es fácil escribir una función que devuelva el resultado ya sea que el artículo pertenezca a geektimes o a un centro de perfiles.
Mostramos la cantidad de artículos publicados usando Matplotlib:
Dividí los artículos "geektimes" y "geektimes only" en el gráfico, porque Un artículo puede pertenecer a ambas secciones al mismo tiempo (por ejemplo, “DIY” + “microcontroladores” + “C++”). Utilicé la designación "perfil" para resaltar artículos de perfil en el sitio, aunque quizás el término en inglés perfil para esto no sea del todo correcto.
En la parte anterior preguntábamos por el “efecto geektimes” asociado al cambio en las reglas de pago de los artículos para geektimes a partir de este verano. Mostremos los artículos de geektimes por separado:
El resultado es interesante. La proporción aproximada de vistas de los artículos de geektimes con respecto al total es de alrededor de 1:5. Pero mientras el número total de visualizaciones fluctuó notablemente, la visualización de artículos de “entretenimiento” se mantuvo aproximadamente en el mismo nivel.
También se puede observar que el número total de vistas de artículos en la sección "geektimes" aún cayó después de cambiar las reglas, pero "a simple vista", en no más del 5% de los valores totales.
Es interesante observar el número medio de visitas por artículo:
En el caso de los artículos de “entretenimiento”, está aproximadamente un 40% por encima del promedio. Probablemente esto no sea sorprendente. No me queda claro el fallo de principios de abril, tal vez eso fue lo que pasó, o algún tipo de error de análisis, o tal vez uno de los autores del geektimes se fue de vacaciones ;).
Por cierto, el gráfico muestra dos picos más notables en el número de visitas a artículos: el Año Nuevo y las vacaciones de mayo.
Hubs
Pasemos al prometido análisis de los centros. Enumeremos los 20 centros principales por número de vistas:
Sorprendentemente, el centro más popular en términos de opiniones fue “Seguridad de la información”; entre los cinco primeros también se encuentran “Programación” y “Ciencia popular”.
Antitop ocupa Gtk y Cocoa.
Te contaré un secreto, los hubs superiores también se pueden ver. aquí, aunque allí no se muestra el número de visualizaciones.
Clasificación
Y por último, la calificación prometida. Utilizando los datos de análisis de centros, podemos mostrar los artículos más populares de los centros más populares para este año 2019.
Y finalmente, para que nadie se ofenda, daré una calificación del centro “gtk” menos visitado. Al cabo de un año se publicó uno El artículo, que también “automáticamente” ocupa la primera línea de la calificación.