Seu código python não funciona muito bem. Eu acho que o site foi atualizado recentemente. Desde que eles removeram os links, tanto quanto eu posso dizer ,. Aqui está um exemplo semelhante usando Gumbo.jl e Cascadia.jl .
Estou usando o download
comando interno para baixar a página da web. que grava no disco em um arquivo temporário, que eu leio em String. Pode ser mais limpo usar o HTTP.jl , que pode ser lido diretamente em uma String. Mas, para este exemplo simples, tudo bem
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]
Saídas
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 listou o MIT duas vezes. provavelmente o código de filtragem na minha demonstração não está tranquilo. Mas: encolher de ombros: o MIT é uma ótima universidade que eu ouvi. Julia foi inventada lá: alegria: