0

编译后如何启动follow 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/1。它采用 URL 字符串或task记录。如果这对你不起作用,请告诉我。

一旦应用程序运行,执行类似task_master:insert_task("http://someurl.com/page.html")的操作将插入一个新任务来获取和处理网页。您可以通过查看此处了解“过程”的确切含义:

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

请注意:默认情况下,它对爬取深度没有限制。留给自己的设备,它将递归地蜘蛛整个网络。如果您打算在任何带有传出链接的站点上使用它,您应该通过创建一个Task = #task{url="http://someurl.com/", depth=5};then来限制爬取深度task_master:insert_task(Task)

希望有帮助。

于 2013-06-20T19:21:36.517 回答
1

您不必启动 Erlang shell 来编译应用程序的源代码。你可以做

erlc src/*.erl -o ebin/

在您的应用程序的文件夹中。

另外我建议您尝试rebar

https://github.com/rebar/rebar

它是一个可以轻松编译和测试 Erlang 应用程序的实用程序。

于 2013-06-21T04:01:48.537 回答