Ihr Python-Code funktioniert nicht ganz. Ich denke, die Website wurde kürzlich aktualisiert. Da sie die Links entfernt haben, soweit ich das beurteilen kann. Hier ist ein ähnliches Beispiel mit Gumbo.jl und Cascadia.jl .
Ich verwende den eingebauten download
Befehl, um die Webseite herunterzuladen. Das schreibt es auf die Festplatte in einer temporären Datei, die ich dann in String einlese. Es könnte sauberer sein, HTTP.jl zu verwenden , das es direkt in einen String einlesen könnte. Aber für dieses einfache Beispiel ist es in Ordnung
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]
Ausgänge
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"
Scheint, als wäre MIT zweimal gelistet. Wahrscheinlich ist der Filtercode in meiner Demo nicht ganz richtig. Aber: Achselzucken: MIT ist eine großartige Universität, die ich höre. Julia wurde dort erfunden: Freude: