背景 世の中にあるWebサービスのデータベースを自動で同期して、本家にはない付加価値をつけることによって、手軽にニーズのあるWebサービスを作ることができます。 例えばECサイトのデータをスクレイピングして自前でデータベースとして持っておき、それに対して本家にはない検索方法を提供して、リンクを貼り、アフィリエイトで稼ぐみたいな軽量なビジネスモデルが個人事業のレベルで可能です。 このようなパターンはいくらでも考えられるのですが、とにかくまずはスクレイピングスクリプトを書いて、自動でデータ収集して、きちんと構造化して、それをなるべく最新の状態に保てるようなボットとインフラが必要になるわけです。今回はどのようなパターンであれ、アイデアを思いついてから、立ち上げまで作業を効率化できるようにサンプルテンプレートを作ってみました。 テンプレートといっても必要な以下のようなミドルウェアやフレームワーク込
ヘッドレスブラウザsplashが便利だったので知見を共有します モチベーション jsで構成されたサイトをスクレイピングしたいなと思い立った時、seleniumがデファクトの選択肢として挙げられると思います。 しかしseleniumの含めヘッドレスブラウザはブラウジングが入ってくるので処理がそれなりに遅くなってしまいます。大量のページをスクレイピングする用途では不向きです。 そこで、サイトをしっかりブラウジングしながらもパフォーマンスを両立するヘッドレスブラウザという要件でseleniumの代わりをさがしていたところ、splashに白羽の矢が立ちました。 splashとは scrapyの開発元であるscrapinghub社が開発しているスクレイピングに特化したヘッドレスブラウザです。 splashは他のヘッドレスブラウザとは毛色が違い、Dockerで配布されるHTTP APIです。 ドキュメ
1.はじめに 前回に引き続き、店舗の緯度経度情報を取得します。 今回はMapion電話帳からチェーン展開している企業の店舗情報を取得します。 汎用性を持たせるため、scrapy実行時に引数で以下項目を渡せるようにしています。 ・genre:ジャンルID ・category:カテゴリID ・chain_store:チェーン展開企業ID 例えば、餃子の王将の場合、以下のようになります。 genre=M01(グルメ)、category=002(ラーメン・餃子)、chain_store=CA01(餃子の王将) 2.実行環境・環境構築 実行環境・環境構築は前回と同じ。 3.scrapy item.py、setting.pyの設定も名称/取得項目以外、前回同様なので割愛。 チェーン店舗のトップページ(例)に店舗一覧が載っています。 ただし、このページからは緯度経度情報を取得できないため、各店舗のlin
FAQにも記されていますが、 non-working localStorage in Private Mode. This is a common issue e.g. for websites based on AngularJS. If rendering doesn’t work, try disabling Private mode (see How do I disable Private mode?). Splashはデフォルトでプライベートモードで立ち上がるらしく、プライベートモードだとlocalStrorageが正常に動作しない場合があるよと、、 私は後述するサイトのレンダリングが当初一向にされなかった(=JavaScriptのコードが未解釈だった)ので--disable-private-modeオプション付でdocker runを行ったところ、キチンとレンダリングされる様
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く