如何在编译后启动跟随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}]}`
有什么想法吗?
答案 0 :(得分:4)
Spider是一个erlang应用程序,因此可以使用application:start/1
来运行它:
cd spider
erl -pa ebin
所以erl找到蜘蛛侠文件
1> application:start(inets).
2> application:start(spider).
您可以阅读有关applications的更多信息。
答案 1 :(得分: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};
然后task_master:insert_task(Task)
来限制抓取深度。
希望有所帮助。
答案 2 :(得分:1)
您不必启动Erlang shell来编译应用程序的源代码。你可以做到
erlc src/*.erl -o ebin/
在应用程序的文件夹中。
我还建议你试试rebar
:
https://github.com/rebar/rebar
这是一个可以轻松编译和测试Erlang应用程序的实用程序。