Su código de Python no funciona del todo. Supongo que el sitio web ha sido actualizado recientemente. Desde que han eliminado los enlaces por lo que puedo decir,. Aquí hay un ejemplo similar usando Gumbo.jl y Cascadia.jl .
Estoy usando el download
comando integrado para descargar la página web. que lo escribe en el disco en un archivo temporal, que luego leí en String. Puede ser más limpio usar HTTP.jl , que podría leerlo directamente en una cadena. Pero para este simple ejemplo está bien
using Gumbo
using Cascadia
url = "https://thebestschools.org/features/best-computer-science-programs-in-the-world/"
page = parsehtml(read(download(url), String))
college_name = String[]
college_location = String[]
sections = eachmatch(sel"section", page.root)
for section in sections
maybe_col_heading = eachmatch(sel"h3.college", section)
if length(maybe_col_heading) == 0
continue
end
col_heading = first(maybe_col_heading)
name = strip(text(last(col_heading.children)))
push!(college_name, name)
loc = first(eachmatch(sel".school-location", section))
push!(college_location, text(loc[1]))
end
[college_name college_location]
Salidas
julia> [college_name college_location]
51×2 Array{String,2}:
"Massachusetts Institute of Technology (MIT)" "Cambridge, Massachusetts"
"Massachusetts Institute of Technology (MIT)" "Cambridge, Massachusetts"
"Stanford University" "Stanford, California"
"Carnegie Mellon University" "Pittsburgh, Pennsylvania"
⋮
"Shanghai Jiao Tong University" "Shanghai, China"
"Lomonosov Moscow State University" "Moscow, Russia"
"City University of Hong Kong" "Hong Kong"
Parece que aparece MIT dos veces. Probablemente el código de filtrado en mi demo no sea silencioso. Pero: encogimiento de hombros: el MIT es una gran universidad que escucho. Julia fue inventada allí: alegría: