マッチングアプリ女「お仕事何してるんですかー?」僕「ドーナツ屋さんで販売してますよ」女「…そうなんですね…」
![ソニック速報](https://cdn-ak-scissors.b.st-hatena.com/image/square/a2503d79a936b0b23eb6101e90192e4d679f1aac/height=288;version=1;width=512/http%3A%2F%2Fsonicch.com%2Fwp-content%2Fthemes%2Fcocoon-master%2Fscreenshot.jpg)
マッシュアップで欠かせない技術の一つにスクレイピングが挙げられる。 WebAPIが提供されていないサイトに対して、HTMLから直接情報を取り出す技術だ。 これには大きく分けて2つの方法がある。 HTMLをテキストとみなし、正規表現で処理する方法と、 HTMLをXHTMLに変換し、そのDOMに対してXPathで処理する方法だ。 こういう分野に強いのはPHPやPerlなどの軽量スクリプト言語だろう。 しかしC#使いだってスクレイピングやってみたい。 というわけで、 http://d.hatena.ne.jp/todesking/20061027/1161879777を参考にやってみた。 ちなみにここでやってるのは上記2つの方法のうちの後者。 ・・・うまくいかない。 つかTidyマンドクセー! HTMLをXHTMLに変換したいだけなのに、オプションがありすぎて意味不明です。 もっと手軽なコンバー
htreeとは Rubyのライブラリ。XMLパーサでもあり、テンプレートエンジンでもある。 テンプレートエンジンはsamidareで使われている。 公式ドキュメント。 htreeの挙動は順次変更になっています。 この解説は、2004/05/30に落としてきたバージョンのhtreeに関するものです。 パース urlからパースして、テキストが空でない要素のパスと内容を表示。とりあえずエンコードのハナシは無視。 require 'htree' require 'open-uri' url="http://kitchon.ddo.jp/~ashiya/diary" ht=HTree.parse(open(url).read) ht.make_loc.traverse_element do |n| txt=n.node.extract_text.to_s if txt !~ /^(\s\t\n\r)
スクレイピングをやったことがあるひとならばわかると思うけど、スクレイピングはとてもつまらない作業だ。 HTMLの中から抜き出したい部分を見つけて、その周辺にある特徴的な部分に着目して正規表現を書いたりして抜き出す。あるいはHTMLからDOMを生成して特定のクラスがついているエレメントを抜き出したりする。HTMLをXHTMLに整形、変換してXPathで抜き出す方法もある。どの方法もやることは単純で簡単なことだけれど、極めてめんどくさい。 そういうものだと思って数年間過ごしてきたけれど、去年の夏に出てきた Dapper: The Data Mapper は、そんな退屈な常識をモダーンなajaxでもって吹き飛ばした。もしDapperがどんなのなのか知らなかったら、ちょっと長くてはじめ退屈なんだけど デモムービー を見てみてください。 Dapperが教えてくれたことは、スクレイピングなんて、欲し
2007/02/20 WebサービスのAPIやRSSフィードを使って複数サイトのサービスや情報をマッシュアップ――。これはWeb2.0が包含するいくつかの概念のうち、最も重要なものの1つだ。Amazon.comやGoogle、Yahoo!、楽天といった大手Webサイトは、RESTやSOAPを用いたAPIを公開しており、さまざまなサービス提供者や個人がAPIを通して各種サービスを利用している。その一方、世の中のWebサイトの大多数はWeb1.0的なHTMLやCGIフォームしか提供していないのが現実だ。こうした背景からWeb1.0サイトから構造化されたデータを引っ張り出す“Webスクレイピング”技術が急速に発展してきているようだ。 HTMLをXML化し、XPathで関連データだけを抽出 例えば価格情報サイトでは製品名から価格が簡単に調べられるが、Webサーバから提供されるのは、製品名や価格にレ
目次導入 -- HTML_Template_Flexy に出来ること 設定項目 -- HTML_Template_Flexy の初期設定 new HTML_Template_Flexy -- constructor$flexy->compile() -- コンパイルする必要があればマークアップを PHP にコンパイルする$flexy->outputObject() -- コントローラオブジェクトとテンプレートをマージし、結果を出力する$flexy->bufferedOutputObject() -- コントローラーオブジェクトをテンプレートとマージし、結果を返す$flexy->getElements() -- テンプレートから動的要素を取り出すnew HTML_Template_Flexy_Element -- クラスのコンストラクタ$element->setValue() -- 一般
こないだsmartyよりフレキシブルでスマートらしい、PHPのテンプレートエンジン PEAR :: Manual :: HTML_Template_Flexy のコードをちらっと読んだ。 Flexyは初めてページを表示する時に、テンプレートをPHPのコードとして書き出して、2回目以降は書き出したPHPファイルを実行するようになっているのだけれど、そのコンパイラがあまり賢くないのだ。それをちょこっといじって、出力時の修飾子を複数つけられるようにすれば {pagetitle:utf8:u} みたいにして、文字コードを変換したあとURLエンコード、みたいな出力がスマートにかけていいと思う。それでコンパイルするところを追っていた。 ついでにsmartyもどうなってるんだろう、とコードをちらっと見てみてびっくりしたのが、HTMLのパースに preg_match() が多用されていること。こんなて
Twitter Facebook B! Bookmark LINE Pocket Feedly HTMLをスクレイピング(scraping)してあれこれとするとき、僕はずっと正規表現に頼っていたのですが、 ページの構造が変化するとすぐに使えなくなってしまうし、時間がかかる割りに退屈な作業なので何とかならないかなと思っていました。 PHPで探していたのですが、XML(とかRSS)をパースする関数やライブラリは、良く目にするものの、HTMLを処理できるものはなかなか見つかりませんでした。 以下は、PHP(とかRuby、Perl)でHTMLをスクレイピングしたりパースするための方法。 PHPでスクレイピング&パース HTMLを整形式のXML文書に修正するPHPクラス HTMLを、整形式のXMLに変換してくれるライブラリ。PEARのXML_HTMLSax3が同梱されているので、これだけでちゃんと動
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く