0

コンパイル後に次の git アプリケーションを起動するにはどうすればよいですか?

my steps are:

1. clone git repository "git://github.com/michaelmelanson/spider.git"
2. cd spider
3  erl
Erlang R14B04 (erts-5.8.5) [source] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false]

Eshell V5.8.5  (abort with ^G)
1> make:all().
up_to_date
2> 

最後に、アプリケーションに関連するモジュールを表示するにはどうすればよいですか?

前もって感謝します。


Michael さん、標準タスク リクエスト「task_master:insert_task(" http://www.id.uzh.ch ")」に参加していただきありがとうございます。正常に動作しています。しかし、再帰的なリクエストを制限しようとすると、次のエラー メッセージが表示されます。

* 1: record task undefined

残念ながら、以下の私の提案は機能しません!

rd(task, {url = "", depth = ""}).
 Task = #task{url="http://www.id.uzh.ch", depth=2}.
 task_master:insert_task(Task).

次のエラー メッセージは次のとおりです。

=ERROR REPORT==== 21-Jun-2013::09:47:42 ===
** Generic server <0.52.0> terminating 
** Last message in was {'$gen_cast',
                           {task,
                               {task,{task,"http://www.id.uzh.ch",2},[],-1}}}
** When Server state == {state}
** Reason for termination == 
** {{badmatch,{error,parse_url}},
    [{fetcher,process_task,1},
     {fetcher,handle_cast,2},
     {gen_server,handle_msg,5},
     {proc_lib,init_p_do_apply,3}]}`

何か案は?

4

3 に答える 3

4

Spider は erlang アプリケーションであるため、application:start/1実行に使用できます。

  1. cd spider

  2. erl -pa ebin

    だからerlはスパイダービームファイルを見つけます

  3. 1> application:start(inets).

  4. 2> application:start(spider).

アプリケーションについて詳しく読むことができます。

于 2013-06-20T12:17:32.063 に答える
3

私はそのコードの最初の作成者です。申し訳ありませんが、私はそれをまったく文書化していませんでした...それは、約5年前の私の小さなサイドプロジェクトでした. ですから、これは私にとって少し遠い記憶ですが、私が知っていることは次のとおりです。

アプリケーションの起動方法とタスクの挿入方法について、johlo はまったく正しいです。で開始し、メソッドapplication:start(spider)で新しいジョブを挿入できるはずです。task_master:insert_task/1URL 文字列またはtaskレコードのいずれかを取ります。それがうまくいかない場合はお知らせください。

アプリが実行されると、次のようなことを行うtask_master:insert_task("http://someurl.com/page.html")と、Web ページをフェッチして処理する新しいタスクが挿入されます。ここを見ると、「プロセス」が正確に何を意味するかがわかります。

https://github.com/michaelmelanson/spider/blob/master/src/fetcher.erl#L113

基本的に、ページを取得し、HTML を解析し、リンクを抽出して、結果をtask_master. 次にtask_master、各リンクを処理する新しいタスクを挿入し、接続されているすべてのページを再帰的にスパイダーします。現在、結果に対して何も行いませんが、そのコードを配置するのに適した場所は次のとおりです。

https://github.com/michaelmelanson/spider/blob/master/src/fetcher.erl#L132

警告: デフォルトでは、スパイダリングの深さに制限はありません。独自のデバイスに任せると、Web 全体を再帰的にスパイダーします。発信リンクのあるサイトでこれを使用する予定がある場合は、Task = #task{url="http://someurl.com/", depth=5};thenを作成してスパイダリングの深さを制限する必要がありますtask_master:insert_task(Task)

それが役立つことを願っています。

于 2013-06-20T19:21:36.517 に答える
1

アプリケーションのソースをコンパイルするために Erlang シェルを起動する必要はありません。あなたはただすることができます

erlc src/*.erl -o ebin/

アプリケーションのフォルダーにあります。

また、試してみることをお勧めしますrebar

https://github.com/rebar/rebar

Erlang アプリケーションを簡単にコンパイルおよびテストできるユーティリティです。

于 2013-06-21T04:01:48.537 に答える