タグ

ブックマーク / lemniscus.hatenablog.com (3)

  • sxpathのクエリに正規表現を書けるようにする - 再帰の反復blog

    「sxpathがとてもわかりにくい」の補足。 sxpathのクエリに正規表現を埋め込めるようにしてみた。 クエリの中に正規表現が出てきた場合、「子ノードの中から」テキスト要素でかつ正規表現にマッチするものを取り出す(子ノードから選ぶのは、他のクエリも(「//」を除いて)子ノードについて探索をおこなうから)。 たとえば ((sxpath-rx '(// a @ href #/\.html$/)) node) で、a要素のhref属性の値のうち、「.html」で終わるものだけを取り出す。a要素全体が必要なら ((sxpath-rx '(// (a (@ href #/\.html$/)))) node) と書く。 やっていることは、クエリに出てくる正規表現を関数に置き換えてからsxpathに渡しているだけ。 (use sxml.sxpath) (define (sxpath-rx query)

    sxpathのクエリに正規表現を書けるようにする - 再帰の反復blog
    sirocco634
    sirocco634 2010/04/20
    sxpathのクエリに正規表現をかけるようにする
  • Gaucheでクローラを書くことと、そのためのライブラリ - 再帰の反復blog

    リンクをたどっていくつか巡回するだけの簡単なクローラを作ってみたら、戸惑うところが多かったので、まずはそのメモ。 戸惑ったところ http-get オプションで「:no-redirect #t」を指定しないと、自動でリダイレクトする → リダイレクトされると、持ってきたページのURIが想定していたURIと違う場合がある。→ 「http://」から始まらないパス(相対URI)を長いURI(絶対URI)に戻せない。 オプション「:sink out」を指定すると、HTTPの応答のメッセージボディは出力ポートoutに書き出されていく。「:sink out」を指定している状態でリダイレクトが発生すると、リダイレクト前にoutに書き出されたものとリダイレクト後の結果の両方が書き込まれた状態になる。flusherオプションで適切に処理させる? 文字コード関連 http-getは文字コードの指定オプション

    Gaucheでクローラを書くことと、そのためのライブラリ - 再帰の反復blog
    sirocco634
    sirocco634 2010/04/17
    Gaucheでクローラーを書くためのライブラリ
  • sxpathがとてもわかりにくい - 再帰の反復blog

    sxpathを使ってみようとしたら、とてもわかりにくかったのでメモ。 Gaucheのマニュアルを見ると SXPathは、XML Information set (Infoset)のインスタンスのS式フォームである SXMLのためのクエリ言語です。 とあるけど、ここではクエリ言語に限らずに、sxml構造から特定のノードを取り出すための機能全般を表すことにする。 補足: HTMLをSXMLに変換する。 sxmlツリーを探索する コンバータ sxpath関数に与えるクエリ 条件で子ノードを限定する コンバータの埋め込み 関連:2010-04-12「sxpathのクエリに正規表現を書けるようにする」 補足: HTMLをSXMLに変換する。 とりあえず何か具体的なXMLデータがあった方がよいので、HTMLファイルをSXMLに変換することにした。でもたいていのHTMLファイルはXMLの形式になっていな

    sxpathがとてもわかりにくい - 再帰の反復blog
    sirocco634
    sirocco634 2010/04/05
    Gaucheでsxpathを使用する際のメモだよ
  • 1