Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

ソーシャルメディアのAPIとそのレート制限は、あまり気分のよいものではありません。特にInstagram。あんな制限つきAPIを欲しがる人がいったいどこにいるんでしょうね? 最近のサイトは、スクレイピングやデータマイニングの試みを阻止するのがうまくなってきました。AngelListはPhantomJSすら検出してしまいます(今のところ、他のサイトでそこまでの例は見ていません)。でも、ブラウザ経由での正確なアクションを自動化できたとしたら、サイト側はそれをブロックできるでしょうか? 並行性を考えたり、さんざん苦労して用意した結果として得られるものを考えたりすると、Seleniumなんて最悪です。あれは、私たちが「スクレイピング」と聞いて思い浮かべるようなことをするためには作られていません。しかし、賢く作り込まれた今どきのサイトを相手にして、インターネットからデータを掘り当てるための信頼できる
これは,クローラー/Webスクレイピング Advent Calendar 2016の1日目の記事です. JavaScriptを利用したページをスクレイピングするためには,スクリプトを実行し,ページを適切にレンダリングする必要があります. 本記事では,そのようなケースに便利なPythonライブラリscrapy-splashを紹介します. 前置き ScrapyやSplashを既にご存知の方は読み飛ばして下さい. Scrapyとは? Scrapyとは,Python製のクローリング・スクレイピングフレームワークです.フレームワークというだけあって,Scrapyにはクローリング・スクレイピングに便利なオプションがあらかじめ用意されています. Scrapyに用意されている便利なオプション例 サイトクローリング間隔を設定 robots.txtを解釈したクローリングを自動的に実行可能 Scrapyを利用す
特定のWebサイトを定期的にチェックして特定のキーワードが含まれていたら 通知してくれる仕組みを1つ覚えておくと色々重宝する。 例えば 会社に社員用Webサイトがあるなら、 (そしてそのサイトがRSSもメール通知も提供してないなら) そこに「重要」とか「人事」とかのキーワードを含む記事が投稿された時に 通知を受け取れるようにしておけば、 いちいちサイトをチェックしにいかなくても 逃さず確認できる。 また、Webスクレイピングする方法を覚えておけば、 通知を受け取る以外にも、 画面キャプチャの撮影や画像やテキストの収集を 自動化したり、作成したWebシステムの画面テストを行う、 等の応用もしやすくなる。 今回は Node.js + Grunt + cheerio-httpcli を使用して 手軽にWebサイトのデータをチェックする方法を紹介する。 今週の「世界の果てまでイッテQ!」で「QTu
Railsでスクレイピングが必要な時は Nokogiri を使っていたけれど、普通のサイトはJavascriptを使っているわけで、Nokogiriだけではスクレイピングが難しいこともある。そんな時にどうしようかと。 Nokogiri 鋸 Protractorなら、実際にユーザーがブラウザーを立ち上げて、ボタンをクリックして、テキストを読んで… みたいなことを再現できるのですごい便利。ほんとはAngular.jsのためのテストフレームワークだけど、スクレイピングにも使える。 Protractor - end to end testing for AngularJS nvmのイントール 手元のMacOSにインストールして使ってみる。 Ruby使っているならお馴染みのrvm(Ruby Version Manager)。 nvmはNode.jsのバージョン管理ツール。 nvmを入手 $ git
今日はスクレイピングの話をします。 今回のターゲットは三菱東京UFJダイレクト。金融機関もウェブサービスを提供するようになり、金にまつわる情報を電子化しやすくなりましたが、かれらが API を提供しているわけではないので、私たちのほうで取得・加工をしてやる必要があります。今やウェブサイトであれば当然のように JavaScript を使っているわけなので、いわゆる mechanize、つまり HTML の解釈をおこない、リンクのクリックやフォームの送信をシンプルに実装するようなやり方でのスクレイピングはすでに無理筋だといえます。 もちろん今日においてはブラウザオートメーションという方法がすでにありますので、これを利用してやれば、なんの憂いもなく実際に人間が使うようなブラウザをプログラマティックに操作することができます。現在は Selenium WebDriver がデファクトで、これが使用す
2013-08-17 Casper.JSのススメ Phantom.JSというヘッドレスブラウザがある。 これが超便利なんだけど、セッション周りとか込み入った操作をしようと思うと途端に操作(JSファイルへの記述)が面倒になる。 そこで、Casper.JSの出番だ。 CasperはPhantomと連携するライブラリで、簡単な記述で複雑な操作を実現することができる。 また、Phantomのレンダリングエンジンはwebkitで、Gekkoで動いているSlimer.JSってのもあって、これらの上で動くCasperを使っているとレンダリングどっちも使えるので捗る(と思う)。 今回はEnd-to-Endテストの実現を目的に、Casper.JSでwebサイトのHTMLを解析してみる。 もちろん、スクレイピングなどにも応用可能だ。 ↑ヨルムンガンドに出てくる主人公(ココ・ヘクマティアル)の兄キ
Webページをスクレイピングしてる時、HTMLじゃなくてJavaScriptの変数をのぞきたい事が稀によくある。 インストール brew install phantomjs document.titleを取得 page_title.js var url = phantom.args[0] || 'http://shokai.org'; page = new WebPage(); page.open(url, function(stat){ if(!stat){ phantom.exit(); } else{ var title = page.evaluate(function(){ return document.title; }); console.log(title); phantom.exit(); } }); 実行 phantomjs page_title.js http://go
はじめに PhantomJS - Scriptable Headless Browser PhantomJS はヘッドレスな(ブラウザ画面のない)QtWebKit ベースのブラウザで、JavaScript の API を通じて、そのブラウザを自由自在にあやつることが出来ます。使用シーンとしては、Jenkins などの CI ツールとの組み合わせによる Web ページの GUI の自動テストや、Web ページのスクリーンキャプチャ、スクレイピングなどが挙げられます。 今回は、ログインが必要なページの情報をパースして自分専用に RSS 化したいなと思い、3つ目のスクレイピング用途をベースに調べてみました。その内容を備忘録として残しておきます。 出来るようになること ログインが必要なページの HTML を取ってくる ログインが必要なページのスクリーンキャプチャを撮る PhantomJS の導入
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く