通常、XPath を書くときは //p のようにすることが多いと思いますが、これには名前空間の指定が含まれていないため、XHTML 文書 (MIME タイプが application/xhtml+xml で提供されている文書) では使えません。これに対するアプローチとしては、//h:p のようにあらかじめXPath 式に名前空間の指定を含めておき、リゾルバによる名前空間接頭辞の解決時にHTML と XHTML とで処理を分けるというのが一般的でした。「XPathNSResolver のクロスブラウザとか」や「document.contentType == "application/xhtml+xml"なページでの$X」で扱っている方法です。 とはいえ、いちいち名前空間接頭辞を指定するのは面倒くさいですし、同じ名前空間に対する接頭辞が人によって違うのも不便です。XPath 式の中で要素名
http://coderepos.org/share/wiki/jsAutoPageScraper 概要 ブックマークレット開発などにおいて、JavaScriptでのHTMLスクレーピングを支援します。検索結果などの複数のレコードをJavaScriptの配列に変換して取得できます。ページングを利用しているサイトでは、意識することなく複数ページにまたがってレコードを取得できます。 特徴 クロスブラウザで動作します。 スクレーピングする要素の指定にはXPathを使います。IEとかSafari2の場合はJavaScript-XPathをロードして使います。 AutoPagerizeとかLDRizeのSITEINFO形式(一部)を利用できます。 使い方 1. jsAutoPageScraperをcodereposからチェックアウトし、適当なサーバにアップします svn co http://svn.
メインブラウザとして使っているSleipnirでAutoPagerizeが使えないのが悔しかったので(?)、トライしてみました。 ■SeaHorseスクリプト(Sleipnir専用)
AutoPagerize IDEのように、ある条件を元にXPathを生成するようなコードは、とりあえずふつうに書くと var attribute = "class"; var nodeName = "div" var value = "main"; "/" + nodeName + "[contains(@" + attribute +",'" + value + "')]" のような何を書いてるのかわからないようなコードになってしまいます(AutoPagerizeもこんなかんじになってます)。SQLであればDBIx::ClassをはじめとしてORマッパがあって $self->{schema}->resultset('Recents')->select( { id => 4000, } ); と書いたものを SELECT * FROM recents me WHERE ( ( me.id
JavaScript-XPath とはJavaScript-XPath は、 DOM 3XPath を実装していないブラウザに対して、実用的な速度で動作する DOM 3XPath のエンジンを追加します。 一言で乱暴に言ってしまえば、どのブラウザでも document.evaluate って関数でXPath 使えるようになるよ!ってことです。 以下が公式サイトになります。 http://coderepos.org/share/wiki/JavaScript-XPath DOM 3XPath ってなんなの!? めっちゃ簡単(で、ちょっとだけ適当)なDOM 3XPath の説明をします><。JavaScript でよく使う document.getElementById や document.getElementsByTagName って関数ありますよね? DOM 3XPath
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く