Cascadia.jlは、Julia言語からCSSセレクタを扱うためのパッケージである。ウェブスクレイピングで取得したHTMLデータの中から、条件を指定して要素を抽出することができる。
まず、Gumboを利用してHTML文字列を文書に解析する。次にCascadiaで文字列からCSSセレクタを作成し、セレクタに一致する文書内のノードを取得する。
Cascadia.jlを使用するには、Julia言語にCascadiaパッケージを追加する必要がある。
Cascadiaパッケージを追加するには、JuliaのREPLを起動して、Pkgパッケージのadd()関数を実行する。
julia> using Pkg
julia> Pkg.add("Cascadia")
Cascadia.jlは Gumbo.jl を利用するので、Gumboパッケージも追加する必要がある。
パッケージの追加は、Juliaインストール後に1度だけ行えばよい。パッケージを使うたびに追加する必要はない。
パッケージを追加せずにCascadiaを使おうとすると、次のようなエラーメッセージが出力される。
julia> using Cascadia
ERROR: ArgumentError: Package Cascadia not found in current path:
- Run `import Pkg; Pkg.add("Cascadia")` to install the Cascadia package.
Stacktrace:
[1] require(into::Module, mod::Symbol)
@ Base .\loading.jl:871
Cascadia パッケージを使用するためには、using キーワードで Cascadia パッケージをロードする必要がある。
julia> using Cascadia
sel はCSSセレクタを作成するリテラルである。
julia> using Cascadia
julia> s = s = sel"head"
Selector(Cascadia.var"#5#6"{String}("head"))
julia> typeof(s)
Selector
Selector はCSSセレクタを作成する関数である。
julia> using Cascadia
julia> s = Selector("head")
Selector(Cascadia.var"#5#6"{String}("head"))
julia> typeof(s)
Selector
julia> using Gumbo
julia> doc = parsehtml("<title>Example</title>")
HTML Document:
<!DOCTYPE >
HTMLElement{:HTML}:<HTML>
<head>
<title>
Example
</title>
</head>
<body></body>
</HTML>
julia> using Cascadia
julia> e = eachmatch(Selector("head"), doc.root)
1-element Vector{HTMLNode}:
HTMLElement{:head}:<head>
<title>
Example
</title>
</head>
julia> typeof(e)
Vector{HTMLNode} (alias for Array{HTMLNode, 1});
Sengupta, Avik. (2021). Algocircle / Cascadia.jl