2009-06-10 11 views
6

指定されたWebページ上の数字を読み込んで、あとで分析するためにそのデータを保存するコンテンツ収集プログラムを構築する必要があります。私はリンクや関連データを検索する必要はなく、毎日コンテンツが変化するウェブサイトからすべてのデータを収集するだけです。Webクローラーの理想的なプログラム言語は何ですか?

私はプログラミングの経験はほとんどありません。学習にはこれがうまくいくと思います。速度は大きな問題ではありません。私は、クローラが最大で1日に4000ページを読み込む必要があると推定しています。

ありがとうございました。

編集:データを収集しているウェブサイトがクローラから保護されているかどうかを事前に確認する方法はありますか?

答えて

9

おそらくPython、またはPerl。

Perlにはとても良いLWP(Library for WWW in Perl)があり、Pythonにはurllib2があります。

どちらも、ほとんどのOSで使用できる簡単なスクリプト言語です。

私はPerlでかなりの回数クローラを実行しましたが、それは仕事の夕方です。

いいえ、彼らは本当にソートのCAPTCHAを使用する以外はクローラから自分自身を守ることはできません - 他のすべては設定するよりも簡単です。

Javaについてのポイントがありました。Javaは問題ありません。これはより冗長で、開発環境の設定が必要です。そのため、1晩(おそらく1週間)には実行しません。 小規模な作業の場合、作成者が指摘したように、それは過度なことかもしれません。 一方、lint,tagsoup(ランダムなHTMLのためのDOM横断)とlucene(全文索引付けと検索)のような非常に有用なライブラリがあります。 この場合、ウェブクロール用にApache commons-httpclientライブラリをお勧めします(または、夢中ならばnutch)。

また、指定されたWebサイトの変更を監視し、有用な方法で提示するための棚用製品があるため、1つだけ取得する可能性があります。

+5

ウェブサイトはクローラから自分自身を守ることはできませんが、クローラはRobots Exclusion Protocolに従うことを尊重しており、クライアントはウェブサイトの利用規約に従うことに誠意を持っています。 –

+0

私はあなたに同意します。 – alamar

+0

ウェブ上のほとんどのものは、プログラミングクローラー向けにJavaを生み出しています。 Javaは複雑すぎるのですか?それとも何が問題なの? – Alex

-3

私はPHPと言います。これはウェブ指向の言語で、このようなプロジェクトで必要となるすべての奇妙なことを行うためのライブラリ関数をたくさん意味しています。これは、組み込みの(CURL)のための良いライブラリを持っています、そしてそれは死んだ単純な言語です。あなたがそれをプログラミングし続ければ、あなたはそれを比較的速く成長するでしょうが、このような単純なもののためには良い選択です。

+1

クライアント側のスクリプトにはPHPをおすすめしません。 これはできますが、それは後方です。 – alamar

+1

私はそれをして、ひどいと言わなければなりません。スレッドの欠如は、効率的なスパイダーを書く際に多くの問題を引き起こしています。 – Lothar

+0

私は複数のPHPクローラをやったことがありますが、いくつかのURLから要素を取得することを拒否しているのに、Pythonが最良の選択です。私はPerlで作業していませんが、PythonはGoogleによって使用されるもの! –

2

私は、そこからウェブサイトは 収集データは クローラから保護されている場合は、前もって のテストする方法はありますか?

ファイルが存在する場合は、ファイルの内容を尊重することが有効な礼儀です。

7

最も快適な言語は、使用するのに最適な言語です。

私はあなたがウェブクローラは火の洗礼のビットであることを見つけるかもしれないと、あなたに慣れるためにいくつかの他の多くの些細なアプリケーションを構築する必要が非常に少ないプログラミング 経験

を持っています選択された言語(および該当する場合はフレームワーク)。

幸運を祈る!

1

PerlまたはPythonは明白な選択です。それは実際には一日の終わりに最も適したものに依存します。それは難しいことではありませんが、一般的に、柔軟なperlがあなたに適した流暢な言語を好むことがわかっても、より厳密な言語をより多くの数学的な考え方で使用したいと思っている場合(特に、あなたがPythonでもっと家にいるように感じるでしょう。他の言語でもうまく機能しますが、移植性と、CLI操作のための強力な言語、特にテキスト操作のための明確な選択肢です。また、webdev言語が強く、Web指向のタスク上記のphpの利点を与えますが、クライアント側のphpの否定的な側面はありません)。多くの有用なモジュールがあなたにとってプロであるなら、この種のタスクのためには他のどの言語よりも(CPAN上で)膨大な量のものがあります。コードを入手する前に再利用できるコードがあればチェックする価値があります。どの言語を使用すべきかを知る。ある区域では、他の区域よりも速いものがあります(pythonは一般的に複雑な数学に優れていますが、perlは一般的にテキストをより速く処理できます。

他の言語の選択肢がありますが、コンパイルされた言語は移植性が低く、一般的にはサーバ上に設定するのに苦労しますが、より高速に実行されます。スクリプト言語は、一般に、コンパイルされた言語よりも簡単にテキストやファイルを操作するように設計されていますが、必ずしもそうであるとは限りません。私はperlをより快適に感じるので、それを使用しますが、それはあなたが決定するべき基礎ではなく、あなたが使用できるリソースが多く、より良い気分が好きであることを知る(いくつかを読んでくださいどのスタイルがあなたにとってより合理的かを確認してください)、次に決定してください。

初心者を対象とした集団知能プログラミングに関する本がありますが、読んだことはありませんが、かなり良いと思われています。ショップで軽く叩いて、Web -crawler algorithms ...例としてpythonを使用しています。

3

私はウェブクローラーを一度作成しましたが、他のサイトへのより多くのリンクについてサイトを検索し、それに従うように作成されました。それらのリンクを覚えておいて、サイトを2回訪問しないようにしなければならなかったので、重複したURLを確認するための非常に迅速な方法が必要でした。これを行うために、私はDelphi 2007で独自のハッシュテーブルを作成しました.Internet ExplorerのCOMインターフェイスの使い方に関する追加知識があるため、短時間でかなりのページを読み込むことができました。 私は多くのパフォーマンスを望んでいたので、このクローラを作成するためにDelphiを使用しました。

また、私はDelphiを選択しました。これは私が最も快適な言語であり、独自のハッシュテーブルアルゴリズムの作成方法など、いくつかの面白い話題について多くのことを学ぶのに役立ちました。それに、私のような経験豊富なプログラマーにとっては非常に興味深い課題でした。

私のアドバイスは既に提供されています。あなたが最も快適なツールを使用してください。

1

初心者なら、私はREBOLのような「簡単な」言語をお勧めします。 REBOLでは、一連のwikipediaページを確認するための基本的なスクリプトは、以下のコードのようになります。明らかに、「簡単」は主観的なものであり、要件を満たすためにはこのコードの基本的な変更が必要です。

records:load%records.txt
; (records.txtファイルの内容は重要ではないthis-インデントのように見える)
[
        [en.wikipedia.org/wiki/Budget_deficit
        "米国の財政赤字(ウィキペディア)"
       
       「2009年6月1日{> <のLi ID = "LASTMOD" このページは、上で最後に変更されました} 11時26分に "]

        [en.wikipedia.org/wiki/List_of_U.S._states_by_unemployment_rate
        "米国失業率(ウィキペディア)"
        {< = "LASTMOD" >このページのli idが、最後は "午前20時15分に2009年5月25日。"        
}に変更されました]
]

;さて、レコードをループし、[変更
のforeach RECレコードの
    htmlのウェブをチェック:1    /RECを読んを。/RECない限り
            [< /李>]に任意の[REC/3スルーコピーCURR-MOD-日付]エラーchking 404エラーまたはタイムアウト
       パース/すべてのHTMLはここをクリックを追加4 = CURR-MOD-日付[
                   プリント[ "CHANGE DETECTED:" REC/2]
                 ;ここ
                   を特定のページデータを収集して保存するには、再度解析。 %レコードを更新してください。更新タイムスタンプ
         とTXTファイル]
]

REBOLはよく知られていないが、それは友好的、非常に小さな、クロスプラットフォームとGUIが有効になっています。すばやく汚いスクリプトのために多くの成功を収めました。

関連する問題