タグ

crawlerに関するyogasaのブックマーク (19)

  • クローラー運用を楽にするためのクラウドサービス比較 - ZOZO TECH BLOG

    こんにちは!最近気になるニュースはスピノサウルスの尻尾の化石が発見されたこと1な、SRE部エンジニアの塩崎です。ZOZOテクノロジーズの前身となった会社の1つであるVASILYでは数多くのクローラーの開発・運用の担当をしてきました。 今回はその知見を生かして、クローラーを楽に運用するためのクラウドサービスを紹介します。 概要 データ解析を円滑に進めるためには、CSVやWeb APIなどの構造化されたデータが必要です。しかし全てのWebサイトにあるデータが構造化データを提供しているとは限りません。むしろ提供していないケースの方がはるかに多いです。そのため、Webクローラーを作成して構造化されていないWebページを解析し、構造化データを生成する必要があります。 しかし、Webクローラーの運用には数多くの「つらみ」があります。特に大量のWebページを1日1回などの頻度で定期的にクロールする際には

    クローラー運用を楽にするためのクラウドサービス比較 - ZOZO TECH BLOG
  • あなたの知らない鬱陶しいWebクローラーに立ち向かう方法

    おことわり 技術側の話は少ないです。 記事の内容を真に受けた結果発生した損害などの責任は負いませんのでご了承ください。 まえがき. 記事のターゲット読者について 継続的に治安の悪いWebクローラーから大量にアクセスされていて悩んでいる人 タイトルに釣られて興味位で見に来た人 陶しいWebクローラーの開発者 継続的に 不定期ではなく一定のパターンで定期的にアクセスがあることを指します。 毎日、毎時、毎分、毎秒など。 治安の悪い いわゆるWebクローラー運用の「お作法」から道を外れていることを指します。 robots.txt無視、UA偽装、非常に短い時間でのバーストアクセスなど。 大量に Webクローラーからアクセスされていることを察知出来るほどのある程度まとまったアクセス量があることを指します。 未知のWebクローラーからWeb上の資源を守るのは非常に困難です。 第1部. 振る舞いか

    あなたの知らない鬱陶しいWebクローラーに立ち向かう方法
  • DjangoとCeleryでクローラを書きながら考えた由無し事 - Qiita

    業務でもクローラを見ることが多いのですが、今回は新しくクローラ作るならとりあえずDjango+Celery使うだろうなぁということで、個人でサンプル書いて見つつ思ったところをつらつらと書いてみようと思います。 クローラの基的な処理段階 クローラといっても人によって微妙に定義が違う状態で会話する事が多いのでとりあえず今回の対象は、 一定の条件に従ってWebページのリンクを収集する 各リンク内のページ内容をスクレイピングする スクレイピングした後の処理については、今回は対象外とする という前提でお話します。 今回のサンプルの構成 y-matsuwitter/django_sample_crawler 今回サンプル書く上での構成ですが、 Python 3.4.3 Django 1.9 Celery 3.1.19 lxml 3.5.0 requests 2.8.1 を利用し、下記を実施するものを

    DjangoとCeleryでクローラを書きながら考えた由無し事 - Qiita
  • クローラー/スクレイピング本がざくざく - プログラマでありたい

    2015年8月末に、クローラー/スクレイピングが2冊同時に発売です。Python版メインのものとJavaScript版メインのものです。なかなか市場のニーズ突いてきていますね。 実践 Webスクレイピング&クローリング-オープンデータ時代の収集・整形テクニック 作者: nezuq,東京スクラッパー(協力)出版社/メーカー: マイナビ発売日: 2015/08/28メディア: 単行(ソフトカバー)この商品を含むブログを見るJS+Node.jsによるWebクローラー/ネットエージェント開発テクニック 作者: クジラ飛行机出版社/メーカー: ソシム発売日: 2015/08/31メディア: 単行この商品を含むブログを見る 実践 Webスクレイピング&クローリング-オープンデータ時代の収集・整形テクニック 実践 Webスクレイピング&クローリング-オープンデータ時代の収集・整形テクニックは、Py

    クローラー/スクレイピング本がざくざく - プログラマでありたい
  • クローリングしにくいものに挑戦 公開用

    e-ZUKA Tech Night in 博多! -fin tech特集- Bitcoinのブロックチェーンでできるコントラクトshigeyuki azuchi

    クローリングしにくいものに挑戦 公開用
  • CapybaraとSeleniumを使ってGoogle検索するサンプルコード - Qiita

    概要 CapybaraからSeleniumを使う綺麗なコードが分からなかったので、 Rubyによるクローラ開発技法を参考に簡単なサンプルを残しておきます。 仕様 hit_numの引数に渡したワードで検索して検索結果の数を返します。 検索結果の件数がない場合は、allメソッドの返り値がnilなので、分岐しています。 実装 #! /usr/bin/env ruby require "capybara" require "selenium-webdriver" Capybara.current_driver = :selenium module Crowler class Google include Capybara::DSL def hit_num keyword visit URI.escape("https://www.google.co.jp/search?q=" + keyword)

    CapybaraとSeleniumを使ってGoogle検索するサンプルコード - Qiita
  • Pythonでクローリング・スクレイピングに使えるライブラリいろいろ - orangain flavor

    2016-12-09追記 「Pythonクローリング&スクレイピング」というを書きました! Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド- 作者: 加藤耕太出版社/メーカー: 技術評論社発売日: 2016/12/16メディア: 大型この商品を含むブログを見る これはクローラー/スクレイピング Advent Calendar 2014の7日目の記事です。 Pythonでクローリング・スクレイピングするにあたって、いろいろなライブラリがあるので一覧でまとめてみます。 以下の4つのカテゴリにわけて紹介します。 Webページを取得する Webページからデータを抜き出す Webページの自動操作 総合的なフレームワーク なんでこれが載ってないの?この説明はおかしい!などありましたらお気軽にお知らせください。なお、この記事はいろいろなライブラリを紹介することを目

    Pythonでクローリング・スクレイピングに使えるライブラリいろいろ - orangain flavor
  • まだmechanizeで消耗してるの? WebDriverで銀行をスクレイピング(ProtractorとWebdriverIOを例に) - 詩と創作・思索のひろば

    今日はスクレイピングの話をします。 今回のターゲットは三菱東京UFJダイレクト。金融機関もウェブサービスを提供するようになり、金にまつわる情報を電子化しやすくなりましたが、かれらが API を提供しているわけではないので、私たちのほうで取得・加工をしてやる必要があります。今やウェブサイトであれば当然のように JavaScript を使っているわけなので、いわゆる mechanize、つまり HTML の解釈をおこない、リンクのクリックやフォームの送信をシンプルに実装するようなやり方でのスクレイピングはすでに無理筋だといえます。 もちろん今日においてはブラウザオートメーションという方法がすでにありますので、これを利用してやれば、なんの憂いもなく実際に人間が使うようなブラウザをプログラマティックに操作することができます。現在は Selenium WebDriver がデファクトで、これが使用す

    まだmechanizeで消耗してるの? WebDriverで銀行をスクレイピング(ProtractorとWebdriverIOを例に) - 詩と創作・思索のひろば
  • プログラミング・レスで5分でサックリWebスクレイピング「kimonolabs」 - プログラマでありたい

    Rubyによるクローラー開発技法」で付録か何かで書こうか悩んだ末に書かなかったのが、kimonolabsの話です。kimonolabsは、クローラー/スクレイピングをオンラインで実行できるWebサービス(SaaS)です。クローラーを書いておいて何ですが、9割の人は自分でクローラーを作らずに、この手のサービスを利用すれば事足りると思います。(書かなかった理由は、Ruby縛りサービスの継続性とスケジュールの問題です。主に最後) kimonolabsとは? kimonolabsは、先述のとおりWebスクレイピングをしてくれるSaaSです。会員登録してChromeの拡張をいれれば、すぐに使えるようになります。一般的に、Webスクレイピングする場合は、次のような手順が必要です。 対象ページのダウンロード ダウンロードしたページから、特定の箇所を抜き出す 抜き出したデータの保存 対象ページのダウン

    プログラミング・レスで5分でサックリWebスクレイピング「kimonolabs」 - プログラマでありたい
  • 『Rubyによるクローラー開発技法』を書きました - プログラマでありたい

    勉強会やスライドで紹介していましたが、Ruby×クローラーという題材で、『Rubyによるクローラー開発技法』というを書かせて頂きました。RubyEmacsの鬼であるるびきちさんとの共著です。 Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例 作者: るびきち,佐々木拓郎出版社/メーカー: SBクリエイティブ発売日: 2014/08/25メディア: 大型この商品を含むブログ (1件) を見る このを書いた理由 そもそものキッカケは、るびきちさんのエントリーにある通り、SBクリエイティブの編集者さんが、クローラーの作成経験のある人を探していて、私の書いた「オープンソースのRubyのWebクローラー"Anemone"を使ってみる」を読んで打診してくださったというのが始まりです。 私自身も、Webからデータを収集して分析するということは、趣味として長年やってきました。一

    『Rubyによるクローラー開発技法』を書きました - プログラマでありたい
  • Ruby製のクローラー Anemoneでストレージをファイルに変更する - プログラマでありたい

    シリーズの如く何度かAnemoneの話を書いています。Anemoneは割りと小さなモジュールなので、ソースを読めば直ぐに解ることが多いです。一方で、ドキュメントが充実しているとは言い難いので、少し違うことをしようとすると、ソース嫁という状態になります。今回のエントリーもそんな話の一つです。 デフォルトストレージを変更する Anemoneのデフォルトストレージのデフォルトオプションは、nilです。この場合、どういう動作をするかというと、Anemone::Storage.Hashが指定されます。つまりメモリーです。当然ながらクロール量に比例してメモリの使用量が増えます。そうすると、当然動いている端末もしくはサーバのメモリーを圧迫していくという結果になります。 当然望ましくないので、格的に使用する場合はストレージを変更した方が良いでしょう。Anemoneはストレージのオプションが豊富で、PSt

    Ruby製のクローラー Anemoneでストレージをファイルに変更する - プログラマでありたい
  • 使えるWebサービス・オープンソース(26)·クローラー MOONGIFT

    今回のテーマはクローラーです。Webサイトを開発していたりする際に欲しくなるのがクローラーです。外部のコンテンツを取得するのにJavaScriptではクロスドメインの制約があるのでサーバサイドから取得するなんてことはよくあると思います。 しかし意外とHTTPヘッダーの解釈や文字エンコードなどクローラーを書くのも一筋縄ではいきません。そこで今回はクローラーに似たサービスやオープンソース・ソフトウェアを紹介します。 kimono : Turn websites into structured APIs from your browser in seconds 特徴としてスクレイピングではなく、DOM構造を理解した上で似たような構造部分を自動でピックアップしてJSON/CSVにしてくれるという点があります。一覧ページなどで、リスト部だけを効率的に取得したいなんて使い方が考えられます。 html2

    使えるWebサービス・オープンソース(26)·クローラー MOONGIFT
  • Ruby製のクローラー Anemoneの文字化け対策 - プログラマでありたい

    何度も取り上げていますが、Ruby製のクローラーであるAnemoneについてです。もう2年ほどメンテナンスされていないものの、Rubyの中のクローラー・フレームワークとしては未だに一番の完成度です。しかし、残念ながら幾つかの問題点があります。その中で日語を扱う我々にとっては一番大きな問題は、文字化けです。 Anemoneの文字化けの原因 Anemoneの文字化けの原因は、ずばりUTF-8以外の考慮が何もされていないためです。Anemoneが利用するHTMLパーサーであるNokogiriは、もともと内部的な文字コードをUTF-8として扱います。UTF-8以外の文字コードを扱う場合は、文字コードを指定して渡す必要があります。それにもかかわらず、AnemoneがHTMLをパースする時は、次のような実装になっています。 # # Nokogiri document for the HTML bod

    Ruby製のクローラー Anemoneの文字化け対策 - プログラマでありたい
  • 複数並行可能なRubyのクローラー、「cosmicrawler」を試してみた - プログラマでありたい

    最近のRubyのクローラーは、EventMachineを使って並列化するのが流行のようです。EventMachineは、非同期処理をお手軽に実装できるフレームワークです。Rubyのスレッド機能との違いは、Reactorパターンを使いシングルスレッドで実装している点です。こちらのブログが詳しいので参考になります。 「見えないチカラ: 【翻訳】EventMachine入門」 EventMachineを使うと、イベント・ドリブンの処理を簡単に実装出来ます。使い方は簡単ですが、通常の同期処理やスレッドをつかった処理に比べると、どうしてもコードの記述量は多くなります。今回の例である並列化してクローラーを走らせるという用途であれば、短時間で多くのサイトにアクセスするのが目的です。イベント・ドリブンで並列化処理を実装するのが目的ではないはずです。その辺りの面倒くさい処理を実装したライブラリがcosmic

    複数並行可能なRubyのクローラー、「cosmicrawler」を試してみた - プログラマでありたい
  • あらためてRuby製のクローラー、"anemone"を調べてみた - プログラマでありたい

    3年ほど前に、Ruby製のクローラー"anemone"を紹介しました。その当時から完成度が高く、Rubyでクローラーを使う場合はanemoneを利用してきました。最近、他に新しくて良いのがないか調べましたが、機能面の網羅性という意味でanemoneを超えるものは見つけられませんでした。そこで改めてanemoneのソースを読んでみたところ、クローラーが必要とする機能を必要最小限で実装され、やはり中々良い出来です。冬休みの宿題ではないですが、勉強の意味を兼ねてソースを追っていくことにします。 Anemoneが利用しているライブラリ一覧 anemoneが利用しているライブラリは、4種類に分類できます。 Ruby標準or一般的なライブラリ データ取得で利用しているライブラリ データ解析で利用しているライブラリ データ保存で利用しているライブラリ この分類別に構造をみるとわかりやすいので、順番に追っ

    あらためてRuby製のクローラー、"anemone"を調べてみた - プログラマでありたい
  • PythonとかScrapyとか使ってクローリングやスクレイピングするノウハウを公開してみる! - orangain flavor

    2016-12-09追記 「Pythonクローリング&スクレイピング」というを書きました! Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド- 作者: 加藤耕太出版社/メーカー: 技術評論社発売日: 2016/12/16メディア: 大型この商品を含むブログを見る 2015年6月21日 追記: この記事のクローラーは動かなくなっているので、Scrapy 1.0について書いた新しい記事を参照してください。 2014年1月5日 16:10更新: デメリットを修正しました。 以下の記事が話題になっていたので、乗っかってPythonの話を書いてみたいと思います。 Rubyとか使ってクローリングやスクレイピングするノウハウを公開してみる! - 病みつきエンジニアブログ 複数並行可能なRubyのクローラー、「cosmicrawler」を試してみた - プログラマにな

    PythonとかScrapyとか使ってクローリングやスクレイピングするノウハウを公開してみる! - orangain flavor
  • Rubyとか使ってクローリングやスクレイピングするノウハウを公開してみる! - 病みつきエンジニアブログ

    今まで何度もスクレイピングとかクローリングをしてきたので、マエショリストの端くれとしてコツを公開すべきかなあ、と思い、公開します。 今日の題材は、CNET Newsです。私はウェブ文書にタグ付けをするという研究をしているのですが、そのための教師データとしてクローリングをします。 photo by Sean MacEntee 要件定義 CNET Newsから全ニュースを保存し、その文をデータベースに保存します。これは、次のようなフローに書き下すことができます。 全URLを取得し、データベースに保存 データベースにある全URLをダウンロードする 保存した全ページを解析して、文をデータベースに保存する という流れです。これらは独立していますから、それぞれどの言語で解析しても構いません。しかし後述しますが、「あとから追いやすくする」「適材適所」といったあたりを気をつけて、言語選択をするべきだと

    Rubyとか使ってクローリングやスクレイピングするノウハウを公開してみる! - 病みつきエンジニアブログ
  • 第22回 Coroを使ったやさしいクローラの作り方(3) | gihyo.jp

    (1)はこちら、(⁠2)はこちらから。 並列・分散処理のためのクローラ ある程度大規模なクローラを作る場合は、一定時間内になるべく多くのURLから効率的にデータを収集する必要があります。接続先のホストごとに同時接続数やウェイトなどの配慮をしつつ、全体としては大量のリクエストを同時に処理する必要があります。検索エンジンのためのクローラ、定期的に同じURLにアクセスする必要がある更新チェックやフィードアグリゲータなどは、特に該当するでしょう。 Perlで高性能なクローラを書く場合の選択肢は2つあります。一つはforkによるマルチプロセスによるもので、Parallel::ForkManagerやParalell::Preforkを使うケースや、ジョブキューのためのフレームワークを使ったワーカがこれに該当します。もう一つはAnyEventやCoroを使ったI/O多重化によるアプローチです。筆者が好

    第22回 Coroを使ったやさしいクローラの作り方(3) | gihyo.jp
  • JavaScriptにも対応出来るruby製のクローラー、Masqueを試してみる - プログラマでありたい

    ちょっと前に試そうと思って、そのまま放置していたruby製のクローラー「Masque」を試してみました。ruby製のクローラーは、他にはAnemoneという優秀なものがあります。その上で何故というと、Anemoneにはない特性があるからです。 MasqueはCapybaraのDSLで記述出来るWebクローラーです。つまりCapybaraを動かす為のものなので、JavaScriptも解釈が出来るということです。また場合によっては、レスポンシブルデザインのサイトの確認も出来ます。一方で、Anemoneはあくまで個別個別のHTMLを取得する為のクローラーなので、JavaScriptを多用しているサイトでの情報取得に向きません。どちらが優れているという訳ではないので、用途に応じて使いこなせばよいでしょう。 Masqueのインストール $ gem install masque Fetching: h

    JavaScriptにも対応出来るruby製のクローラー、Masqueを試してみる - プログラマでありたい
  • 1