人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ウェブサイトの一括スクレイピング方法

とあるウェブサイトのタイトルだけの取得を考えたとします。

例えば、PHPであればfile_get_htmlなどを使用するなどして、スクレイピングが可能です。
しかし、この方法ではウェブサイトのページを指定してスクレイピングすることはできても、ウェブサイトにあるデータをまとめて取得することはできません。
どれだけのデータが入っているかが不明なので、全てを指定することができません。

しかし、フリーソフトなどでは、一気に対象ウェブサイトからタイトルなどの希望データを取得できたりします。
特にデータベースを利用しているようなウェブサイトでは全体数もつかみ切れないのが通常だと思うのですが、これはどのような技術で実現しているのでしょうか?

●質問者: jamis
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● degucho
●90ポイント

タイトルというのがよくわかりませんが
トップページからのリンク先を片っ端から取得しているはずです。
file_get_htmlであればのタグを取得してhrefの先に対して
file_get_htmlを繰り返します。画像であればimgタグののsrc属性とか。
従ってどこからもリンクがない直接アドレス指定でないと取得できないデータは見つからないと思います。
ダウンローダ的なソフトはリンクをたどる階層の数や外部サーバへのリンクを取得するかなどの設定が大抵あります。
基本的にHTTP GETで取得できるデータで
データベースのデータを全て取得するのは無理だとは思いますが
掲示板などでURLに連番が推測できるような場合は連番での取得を試みているがもしれません。


jamisさんのコメント
回答ありがとうございます。 タイトルというのはページのタイトルです。 リンクの総当たりなんですか。 確かに、一番可能性が高いですね。

2 ● Lhankor_Mhy
●0ポイント

一般にクローラは、既知のHTML文書の新しいコピーを要求し、文書中に含まれるリンクをたどり別の文書を収集するという動作を繰り返す。新しい文書を見つけた場合はデータベースに登録する。また、既知のファイルが存在しないことを検出した場合はデータベースから削除する。

クローラ - Wikipedia

jamisさんのコメント
回答ありがとうございます。

3 ● かずきち。
●10ポイント

ノードを辿ります。
それかipアドレスにpingを投げて、その応答を見ます。


jamisさんのコメント
回答ありがとうございます。

かずきち。さんのコメント
クロラー作るならpythonでbeautifulsoupのライブラリはオススメです。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ