2009年02月19日08:30 カテゴリLightweight Languages perl - HTMLをXMLとして扱う そのXML::Liberalが test でこけまくっていたところから旅が始まった。 ゆーすけべー日記: 壊れた Premiere (映像編集ソフト) のプロジェクトファイルが XML::Liberal (Perlモジュール) で直った ということは、なんとかして壊れたプロジェクトファイルを「well formed」な XML にすればいいじゃないのか!と思ったわけ。そこで活躍したのが「XML::Liberal」という miyagawa プロダクトな Perl モジュール。 やりたかったのは、XHTMLでないHTMLを、XML::*なモジュールで扱うこと。例えばXML::LibXMLを使えば、JavaScriptみたいな感覚でDOMを操作できるし、XML::Sim
サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一本吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には食材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい食材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ
pipesこのブログでも何度か Yahoo! Pipes の話題は取り上げてきましたが、先日実装された「Page Fetch」モジュールは素敵すぎます。ほんとに。今まで、Yahoo! Pipes といえば、XML・CSV か Yahoo が提供してるサービスのデータを加工することしかできませんでした。それが、「Page Fetch」モジュールの登場により、任意の Web ページを加工できるようになったのです。Yahoo! Pipes の使い道といえば、次の2つだと思います。1. RSSリーダーで読むための XML 作り複数の RSS を結合したり、見た目を整えたりして、自分専用の RSS を作る。 (例)サイトの最新被ブックマークを livedoor Reader で読むための Pipes2. Web サービスとの連携JSONP に対応してるので、JavaScript と組み合わせてサーバ
Web::Scraper はいたれりつくせりの仕掛けが仕込んであって、便利ですね。私が、割と良く使っている機能は以下 2 つです。 process の第一引数に、CSS セレクタだけでなく、XPath も指定できます。ただし、XPath を指定するときは先頭を必ずスラッシュ(/)で始めなければいけません。 process の第二引数以降の、値をどこから取得するかを指定する部分に、コード・リファレンスを置くこともできます。これを使うと、DOM ツリー中の値を加工して抽出することができます。 具体例として、デイリーポータルZのアーカイブ一覧の中からべつやくれいさんのエントリを抽出してみることにします。まず、アーカイブ・ページのエントリ部分を取り出してやると、こうなっています。 <TD width="580" valign="top" class="tx12px"> <P> <B><FONT c
naoyaのはてなダイアリー - Web::Scraperを見て。 これはよさそう。ソース読んでみると単純に値を取得する以外にも、どうやら、配列で結果を受け取ったり、サブルーチンを渡して処理を委譲したりできるようなので、ためしにやってみよう。 use strict; use warnings; use Web::Scraper; use URI; use YAML; use Encode; my %result; sub parse_title { my $node = shift; my $text = $node->as_text; my $left = decode_utf8('『'); my $right = decode_utf8('』'); my ($nth, $title, $date) = $text =~ m/^\[(.*?)\]\s+$left(.*?)$right(.
3年前にこの本に出会って、僕はスクレーピングの虜になった。 おかげで正規表現をたくさん書く機会が得られたし、CPANのモジュールともたくさん触れ合うことができたし、さらに自分自身でも構造化されたHTMLを書く習慣も身についた。 ただ、やっぱり、スクレーピングは簡単ではない部分もたくさんあると思う。文字コードについても意識しなければならないし、なにより正規表現で必要な部分を抽出することそのものが結構骨のいる作業だ。HTML::TreeBuilder を使った方がいいのか、それとも正規表現だけでやったほうが楽なのか。そんなことを考慮しながらコーディングして行く。そこがスクレーピングの楽しいところでもあるのだが、そこがスクレーピングの敷居を高いものにしていることも否めない。 そんな、愛らしくもあり憎たらしくもあるスクレーピングを簡単にやってしまうのがこのモジュール、Web::Scraper だ。
Today I've been thinking about what to talk in YAPC::EU (and OSCON if they're short of Perl talks, I'm not sure), and came up with a few hours of hacking with web-content scraping module using Domain Specific Languages. 使ってみたよ! #!/usr/local/bin/perl use strict; use warnings; use FindBin::libs; use URI; use Web::Scraper; use Encode; use List::MoreUtils qw/uniq/; my $links = scraper { process 'a.key
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く