Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。
Xee: A Modern XPath and XSLT Engine in Rust By Martijn Faassen • 2025-03-27 • Tags: xml, rust, xpath, lxml For the last two years I've been working on a programming language implementation in Rust named Xee. Xee stands for "XML Execution Engine" and it supports modern versions of XPath and XSLT. Those are programming languages, and yes, that's XML stuff. Now hold on. Your brain might shut down whe
「XPath」とは、Webサイトの特定の部分を効率的に識別し、データを抽出するための言語を指します。この技術は、Webクローラーやスクレイピングツールにおいて中心的な役割を担い、Pythonなどのプログラミング言語やOctoparseのようなツールを使用する際に不可欠です。 XPathの使い方を理解することで、目的のデータを正確かつ迅速に取得することが可能になります。 本記事では、XPathの基本的な概念を初心者にもわかりやすく解説し、実用的な書き方や役立つ関数について詳しくご紹介します。この記事を読むことで、XPathの基礎知識を身につけ、効果的なWebデータ収集のスキルを習得できるでしょう。 Xpathとは そもそも「XPath」とは何を示すのかわからない方も多いでしょう。ここでは、XPathの基本概念や仕組みをかんたんに紹介します。 XPath (XML Path Language)
この記事はドワンゴ Advent Calendar 2020 16日目の記事です。アドベントカレンダーが好きすぎて、これに加えて最終日も書かせていただきます。急拵えなので内容は薄いですが、興味があればお付き合いください。 はじめに この記事で紹介するXPath 1.0パーサは、ドワンゴ Advent Calendar 2020 最終日にて紹介予定のHTMLパーサである「gammo」向けに開発したものである。 最終日の内容はHTMLパーサに特化したものとなるため、この記事ではgammoが構築したDOMツリーをtraverseするための仕組みとして、XPath 1.0を実装した話を紹介する。 XPath 1.0は1999年に勧告されたXSLT 1.0と同時に公表されたもので、現在の最新バージョンである3.1と比較すると非常に機能が少ないシンプルな仕様となっている。 XPath 1.0を選択した
私なんぞは「その筋」の専門家でもなんでもないので、XMLと向き合わなければならないことなどさほど多くはありません。時折あるそんな機会も、とりあえずPythonでlxml使っておけばOK、てな感覚でおりました。XPath便利ですし、lxmlは速いのではないですかね。でもね、たまに困ることがあります。名前空間の指定されているXML、それもプリフィックス無し、デフォルト名前空間というやつが含まれるとき。そういうときはどうしたらよいんでしょうか? ※「トホホな疑問」投稿順Indexはこちら 最初に名前空間を使用していないXMLで、lxmlのXPath使って「便利」な例を掲げておきます。サンプルに使用したXMLは以下のようなズボラなものです。 <?xml version="1.0" encoding="UTF-8" ?> <sample> <rec> <title>t1</title> <body>
最近ではすっかり、XMLよりJSON形式のAPIが多いですね。 そこで、JSONでもXPATHのように、クエリ形式で要素を検索したいと思い、 jsonpath-ngというよさげなライブラリを見つけたので、それを紹介したいと思います。 スポンサーリンク インストール $ pip install --upgrade jsonpath-ng さっそく試してみる リストの下の要素を検索する例です。 from jsonpath_ng import jsonpath, parse # 実験用のJSONデータ(dict) json = { 'foo': [ {'baz': 1}, {'baz': 2} ] } # fooリスト以下のbaz要素を検索 jsonpath_expr = parse('foo[*].baz') matches = jsonpath_expr.find(json) # 結果を表示
htmlのツリー構造を決める人がちょいちょい構造を変えることが分かり、子要素から親要素へ向かっての検索を行いたかった。 使用したライブラリがコメントアウトされたhtmlタグに反応するので、最初に取り除きたかった。 よって資料が少なかったXPathを選択。classやidの名前や名づけルールを変えられたら困るけど、それはまあ仕方ないかなと思っている。 XPath学習資料 自分が探した範囲では以下のURLが参考になった。 文字ベースの資料 初めて入門するのに読みやすい記事 (*2つはほぼ同一内容) 便利なXPathまとめ - ZOZO TECH BLOG クローラ作成に必須!XPATHの記法まとめ - Qiita XPathに対して「何だこれ・・・」と混乱した頭でも落ち着いて読めば理解できる平易さだった。大変助けられた。 分量はあるが良い入門 XPath | TECHSCORE(テックスコア)
参考xpath cover page - W3CXPath | MDNクローラ作成に必須!XPATHの記法まとめ - QiitaXPath | TECHSCORE(テックスコア)サンプル↓ルート要素からツリー構造を指定。 /html/body/h1 ↓途中までのツリー構造の指定を省略。ツリー構造の途中で使うことも可能。 //h1 /html//a //div//a ↓属性名と値を指定。 //h1[@class='header1'] ↓属性名を指定。値は問わない。 //h1[@class] //*[@class] ↓指定する文字列が含まれる要素を取得。 //h1[contains(@class, 'head')] 第1引数:文字列が含まれているかどうか調査する対象第2引数:文字列↓タグ内テキストを検索対象にしたい場合。 //h1[contains(text(), '見出し')] ただし、この
Using Generators to Modernize a Geriatric Javascript API for $CURRENT_YEAR How do you find-and-replace text on an HTML page? <div>Hello, <span>human</span>!</div> If the text is neatly neatly isolated inside an HTML element, it’s easy; this will do: document.querySelector("span").textContent = "evolved ape"; But here’s a puzzle: how do you you change text that isn’t neatly isolated in an HTML elem
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く