谢谢分数。
我拿一段我得代码出来得瑟一下,
foreach my $v ($tree->findnodes('//table[@id=\'forum_142\']/tbody/tr/th/span[1]')) {
这是xpath,用以解析某个论坛的帖子索引信息。xpath对于xml/html的处理都是非常方便的。
再来看一段erlang得代码
debian-vm:~# cat test/freelancer.erl
-module(freelancer).
-include_lib("xmerl/include/xmerl.hrl").
-export([fetch_project_title/0]).
fetch_project_title() ->
Body = fetch_project_feed(),
{ Xml, _Rest } = xmerl_scan:string(Body),
[ H | _Remaining ] = xmerl_xpath:string("//item/title/text()", Xml),
{ _, _, _, _, Title, _ } = H,
process(_Remaining, [ Title ]).
process([], Titles) ->
Titles;
process(R, Titles) ->
[ H | _Remaining ] = R,
{_, _, _, _, Title, _ } = H,
process(_Remaining, [Title | Titles]).
fetch_project_feed() ->
URL = feed_url_for(),
{ _, {_, _, Body }} = http:request(URL),
Body.
-define(BASE_URL,
"http://www.freelancer.com/rss.xml").
feed_url_for() ->
?BASE_URL.
这个是用以获取并分析freelancer.com的rss feed的程序。 (顺带说一点,要是有兴趣做freelancer可以来http://www.freelancer.com/affiliates/cfk )
这个是我刚刚说的第二点。
第一点 readability.js 应用非常广泛,从自动采集到RSS全文输出都有应用。
http://code.google.com/p/arc90labs-readability/
核心内容是找到内容最为合适的关闭的tag
我有一段时间沉迷采集的时候,提出过一个相似的计算法则
闭合的tag中,有效信息长度/tag闭合区间长度最大的时候就是全文
但是我得计算规则和readability.js在采集论坛的时候并不是很好,因为对于一个论坛,正文部分和回帖部分都是需要采集的,没有办法处理。
但是如果思考深入的话,会发现对于论坛这种动态生成结构的页面,更好的方法是启发性的。我目前的私人side project就是这个,完全自动化的采集。
XPath在Perl 下面 http://search.cpan.org/~mirod/HT ... reeBuilder/XPath.pm
如果你要是手工写的化,下面还有几个重要的东西
LWP::UserAgent
WWW::Mechanize
[ 本帖最后由 cfk 于 6-6-2010 20:51 编辑 ] |