リンク YAPC::Asia Tokyo 2015 HTTP2 時代の Web - YAPC::Asia Tokyo 2015 世界最大、最強!YAPC::Asia Tokyoのフィナーレ!
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ SEGADevTech
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回は本誌Vol.68~73まで「フロントエンドWeb戦略室」を連載していたmalaさんで、テーマはクローラの作り方です。個人用のちょっとしたダウンローダを書くときから、大規模なクローラを書く場合まで、Perlは強い味方になります。 なお本稿のサンプルコードは、本誌サポートサイトから入手できます。 クローラの礼儀作法 クローラ、スパイダ、bot[1]を稼働させる際は、アクセスのしかたによっては相手先のサービスに多大な負荷をかけてしまいます。本節ではまず、使用言語にかかわらずクローラを書くうえで一般的に知っておくべき作法について述べます。 robots.txtによるbotの制御── アクセスしてよいかの指示 Webサイトに置かれるrobots.txtは、botから「アクセスしてよいか」を判断するものです。アクセスする対象がht
大量のサイトのキャプチャ画像を取得したい!そんな要件のお仕事もたまにあるでしょう。 実際、そんな要件に答えるために随分昔に作ったツールがありましたが、最近また利用する機会があったのでブログのエントリとして記載しておこうと思いました。 過去イロイロと検証した結果ですが、Windows + IE + CrenaHtml2jpg によるキャプチャ画像が一番いけてる画像が取得できる結論に達しました。CrenaHtml2jpg とは http://dip.picolix.jp/disp5.html で公開されているサイトキャプチャツールで非常に良くできたツールです。一般的な使われ方としての GUI 提供板貝に、サーバ向け?としてコマンドラインから内部的に IE を起動して描画してキャプチャ画像を出力する機能を有しています。動作中はもちろんパソコンが重くなるし、コピペが若干動作が怪しくなったりしますが
クローリング楽しいですよね! perlで高速にクロールしたいのであればGunghoなど使うのがいいかもしれませんが、 基本手軽にやりたいことが多いので WWW::Mechanize+Web::Scraper という組み合わせでクロールするのが定番でした。 しかしたまたま Scrappy を知り、 少し触ってみたところすごくいいのではないか!?と思い 記事にしてみました。*1 基本系(crawlコマンドを利用する場合) my $scrappy = Scrappy->new; $scrappy->crawl('1.クロールするルートURL', '2.URLにマッチするパス' => { '3.コンテンツにマッチするxpath or CSSセレクタ' => sub { my ($self, $item) = @_; # 4.キューに追加 $self->queue->add($item->{href
ドキュメントねー,と思ったら Redirecting… みたいな素敵なチュートリアルがあったのでいまさらながら使えるようになりました。サンプル群も参考になりました。 はてブのホッテントリから,タイトル,URL,キーワード,タグを抜き出すのを書いてみました。わりと素直に書くとこんな感じ? use strict; use warnings; use Web::Scraper; use Encode (); #binmode \*STDOUT, ':utf8'; my $utf8 = Encode::find_encoding('utf8'); my $target = do { if (@ARGV && ! -f $ARGV[0]) { use URI; URI->new($ARGV[0]); } else { local $_ = do { local $/; <> }; $utf8->de
図書館も新着のRSSとか出すようにしたほうがいいと思うんだけどなぁ。良い本との出会いは心を豊かにするんだったら、出会う頻度をあげるような努力をするのもまぁ図書館の役割なんじゃないかなとか。 と、本当はそんなことはどうでもよくてMIME::Lite::HTMLってのを使えばURLを指定するだけで、HTMLをメールで送ってくれるってのが便利そうだったので、最近使い勝手の悪いサービスの中から適当なサンプルとして図書館の新着検索が選択されただけでした。 プルをプッシュに的な。 use MIME::Lite::HTML; MIME::Lite::HTML->new( From => 'kzfm@***.jp', To => '***@gmail.com', HTMLCharset => 'utf8', Subject => '図書館新着', Url => 'http://library.fujish
動機 スクレイピングでなにをするかなーって思って,ぼくは気象庁から天気予報をブッこぬいてきて,毎日携帯電話にメールできたら便利だなーって考えました.ぼくは日々テキトーに生きているので,天気予報とか見ずに屋外に飛び出した結果,ズブ濡れになって帰ってくるような状況になることがあるのです. 大学生のときにはhttp://amail.am/というサービスを利用していて,これは毎朝降水確率をメールしてくれるサービスでとても便利です.ところが,指定できる配信時刻は午前 7 時が一番早くて,社会人となったぼくはその時間には会社へと飛び出している.結果としてアメールはぼくがズブ濡れにならないような方向にはなんの貢献もしてくれなくなっちゃって,困ったものだ! もちろん聡明なみなさんは,天気予報を見ればいいじゃんとか,117 (177?)に電話すればいいじゃんとか思ったことでしょう.しかし,天気予報を見るのは
Scrapingは余りやらないんですけど、いざやる場合にフォームのパラメタとか調べるのは面倒です。そんな時にWWW-Mechanizeに付属のコマンドのmech-dumpを使うと便利です。 サンプル 例えば、Pathtraqのトップページなら、 $ mech-dump --forms http://pathtraq.com/ GET http://pathtraq.com/analytics url=解析したいサイトのURLを入れてください (text) <NONAME>=解析する (submit) m=hot (radio) [upcoming|*hot|popular|site]と言う風に出力されます。*1 つまり、 name type value url text -- submit 解析する m radio hot(/upcoming/popular/site) って感じだと分かる
Shibuya Perl Mongers Tech Talks #8 いってきました ちょうど日本に帰ってきた時期と台湾から gugod が来日するのがかぶっていることで実現した Shibuya.pm Tech Talk #8 にいってきました。 YAPC::EU でやった Web::Scraper のトークを修正したものを20分で。今回は前半をとばし気味にやったのでなんとか時間に間に合ったかんじです。スライドはいつものように slideshare にあげておきました。 会場の質問でもでましたが、process() などの DSL を使わないAPIを求めているニーズは結構ありそうだなと思いました。この辺はバックエンドのAPIをOOで書き直して、その上に scrapi とか scRubyt のラッパーをかけていくというのがいいかもしれません。 他のトークでは gugod の JavaScri
HTTP::Daemon forkしないので、1個詰まると後続のリクエストは待たされる。 HTTP::Simple::Server デフォルトではforkしない。 HTTP::Simple::Server + Net::Server::Fork forkするので多重化可能。が、リクエストごとに新しいプロセスをforkしちゃう。 HTTP::Simple::Server + Net::Server::PreFork forkするので多重化可能。pre-forkするのでプロセスは使いまわせる。 Net::HTTPServer type=>'forking'でpre-forkする。 URLのパスと関数をマッピングできるのもよさげ。 PerlBal Danga::Socketベースなので、IO多重化(epollとか)な実装。(だと思うす) POE::Component::Server::HTTP
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
2007年04月25日02:00 カテゴリLightweight Languages perl - PoCo::Client::HTTP < LWP::UserAgent->new(keep_alive => 1) POEが大流行しています。私自身POEはちょくちょく使っているのですが、サーバーはとにかくクライアントとなるとそれほど使っていません。 理由は、以下ではありません D-5 出張版 - [開発] PoCo::Client::HTTP decodes content (w/o Permission) Kazuho@Cybozu Labs: Re: PoCo::Client::HTTP が勝手に文字コードを変えてしまう件 理由は、もっと単純。非効率だからです。 以下をご覧下さい。ここでは10000bytesのコンテントを同じサーバーに100回取りに行っています。 % perl lwp
2007年04月10日18:00 カテゴリLightweight LanguagesBlogosphere perl+apache - LWPを責めないで これはPerl Mongerとして一言言っておかねばなるまい。 Googleにもアクセス拒否され、スパム送信源と化した「libwww-perl」とは? - GIGAZINE スパム対策をして気がついたのですが、どうやらスパムトラックバックを送信してくるリモートホスト(IPアドレスなど)はバラバラであっても、ユーザーエージェント、いわゆるブラウザの名称部分に「libwww-perl/5.805」というように「libwww-perl」と入っているものが多く、結果として、Googleなどは検索結果ページに対してこのユーザーエージェント名の一部「libwww」が含まれているとアクセス拒否しているようです。LWPことlibwww-perlは、We
POEとAtamiを活用したWebRobot 簡単なWebRobotを書くときって、基本的に一度走らせたらkillするか全URLを舐めるまで待つしか出来ないし、実行状態を知りたいときにはログファイルに実行状況を書き出してログを読み続けるしかないわけですが 簡単なインターフェイスで、ロボットの挙動を監視したり実行制御させたい時にはめんどくさいコーディングが待ってます。 ほんとに簡単なインターフェィスにして色々やりたいと思ったら、スレッドで管理サーバーとかクロウラーを分離して云々と考えるだけでもややこしいのですが、それを簡単に解決出来そうな組み合わせを思いついたので、とりあえずメモ PerlでPOEというモジュールがあるらしくて、簡単に擬似OSの処理を行ってくれるらしいです。 まだ触ってないのでよく分かってないけど、POEを使って各Robotプロセスの管理が簡単に出来そうなのです。 そして、A
Xangoというクロウラーフレームワークを使ってみる Xango XangoはPerlで書かれた汎用クローラーフレームワークです。 イベント型フレームワークPOEを使用することにより高速なクローリングが可能です。 実装にもよりますが、単一プロセス内でインデックシングや文字コードの変換等の処理を 同時に行うアプリケーションでも1秒に5~8 URL、1時間で 18000 ~ 22000 URLの処理が行えます。 ドキュメントはperldocのみっぽいので、日本語の情報を残す意味で使い方のメモをば。 相当端折って書いてます。 Xangoを使ったクロウラーを書くには、制御用のにPOEセッションを作る必要があります。 Xangoを制御するためのモジュールを適当な名前で作っておくのがスマートかと思います。 とりあえずセッション作成を行う処理を書きます sub spawn { my $class = s
他の Web サイトの情報を URI::Fetch でキャッシュ付き取得 WiKicker や DiKicker でうまく他のサイトの情報を取り込んで利用できるようにしたい。 相手サイト・自サイトともに負荷をかけないように処理するには、うまくキャッシングする必要がある。 キャッシュ機能のあるPerl用HTTPユーザエージェントには WWW::Mechanize::Cached LWP::UserAgent::WithCache URI::Fetch などがある。 WWW::Mechanize::Cached 1.32 WWW::Mechanize::Cached は1度取得したレスポンスを無条件に1日間キャッシュする。 WWW::Mechanize のサブクラスで、便利な機能が利用できるが、キャッシュは適当。 キャッシュは Cache::FileCache決め打ち。 LWP::UserAg
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く