找回密码
 FreeOZ用户注册
查看: 2425|回复: 19
打印 上一主题 下一主题

[论坛技术] 有谁写过supersite采集器

[复制链接]
跳转到指定楼层
1#
发表于 3-6-2010 13:46:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
有谁写过supersite采集器? 按照例子没问题,但是另外写,不是说规则不对,写对了也没有采集结果。

比如说 采集文学城首页
  1. # SupeSite Dump
  2. # Version: SupeSite 7.5
  3. # Time: 2010-06-03 11:44:17
  4. # From: SupeSite社区门户 (http://www.imobilebbs.com/supersite)
  5. #
  6. # This file was BASE64 encoded
  7. #
  8. # SupeSite: http://www.supesite.com
  9. # Please visit our website for latest news about SupeSite
  10. # --------------------------------------------------------


  11. YTo1Mjp7czo3OiJyb2JvdGlkIjtzOjI6IjE1IjtzOjQ6Im5hbW
  12. UiO3M6MTA6Indlbnh1ZWNpdHkiO3M6MzoidWlkIjtzOjE6IjEi
  13. O3M6ODoiZGF0ZWxpbmUiO3M6MTA6IjEyNzU0ODUwMTkiO3M6OD
  14. oibGFzdHRpbWUiO3M6MToiMCI7czoxMToiaW1wb3J0Y2F0aWQi
  15. O3M6MToiNiI7czoxMDoiaW1wb3J0dHlwZSI7czo0OiJuZXdzIj
  16. tzOjg6InJvYm90bnVtIjtzOjE6IjAiO3M6MTE6Imxpc3R1cmx0
  17. eXBlIjtzOjM6Im5ldyI7czo3OiJsaXN0dXJsIjtzOjkwOiJhOj
  18. I6e3M6NjoibWFudWFsIjthOjE6e2k6MDtzOjM1OiJodHRwOi8v
  19. d3d3Lndlbnh1ZWNpdHkuY29tL2luZGV4Lmh0bSI7fXM6NDoiYX
  20. V0byI7czowOiIiO30iO3M6MTM6Imxpc3RwYWdlc3RhcnQiO3M6
  21. MToiMCI7czoxMToibGlzdHBhZ2VlbmQiO3M6MToiMCI7czoxMj
  22. oicmV2ZXJzZW9yZGVyIjtzOjE6IjAiO3M6NjoiYWxsbnVtIjtz
  23. OjM6IjEwMCI7czo2OiJwZXJudW0iO3M6MjoiMTAiO3M6Nzoic2
  24. F2ZXBpYyI7czoxOiIwIjtzOjY6ImVuY29kZSI7czo2OiJHQjIz
  25. MTIiO3M6MTM6InBpY3VybGxpbmtwcmUiO3M6MDoiIjtzOjk6In
  26. NhdmVmbGFzaCI7czoxOiIwIjtzOjE0OiJzdWJqZWN0dXJscnVs
  27. ZSI7czoyNzE6IjxhIGhyZWY9Imh0dHA6Ly93ZWIud2VueHVlY2
  28. l0eS5jb20vYWR2cG9zdC9CQlNWaWV3LnBocD9TdWJJRD1hZHZw
  29. b3N0Jk1zZ0lEPTY2Ij7mi6jkuK3lm73ml6BQSU7nlLXor53lja
  30. HotLnnjofpmY3kuLoxLjjvv6As5Y+m6YCBNjDliIbpkp/lhY3o
  31. tLk8L2E+PC9saT5bbGlzdF08dGQgaGVpZ2h0PSIxNyIgYmFja2
  32. dyb3VuZD0iaW1hZ2VzL2RvdGxpbmVzLmdpZiI+PHRhYmxlIHdp
  33. ZHRoPSIxMDAlIiAgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMC
  34. IgY2VsbHBhZGRpbmc9IjAiPiAiO3M6MTg6InN1YmplY3R1cmxs
  35. aW5rcnVsZSI7czoxNToiPGEgaHJlZj0iW3VybF0iIjtzOjE3Oi
  36. JzdWJqZWN0dXJsbGlua3ByZSI7czowOiIiO3M6MTE6InN1Ympl
  37. Y3RydWxlIjtzOjUyOiJ0ZCBiZ2NvbG9yPSIjZjBmMGUwIiBjbG
  38. Fzcz0iY25UaXRsZSI+W3N1YmplY3RdPC90ZD4gIjtzOjEzOiJz
  39. dWJqZWN0ZmlsdGVyIjtzOjA6IiI7czoxNDoic3ViamVjdHJlcG
  40. xhY2UiO3M6MDoiIjtzOjE2OiJzdWJqZWN0cmVwbGFjZXRvIjtz
  41. OjA6IiI7czoxMDoic3ViamVjdGtleSI7czowOiIiO3M6MTg6In
  42. N1YmplY3RhbGxvd3JlcGVhdCI7czoxOiIxIjtzOjEyOiJkYXRl
  43. bGluZXJ1bGUiO3M6MDoiIjtzOjg6ImZyb21ydWxlIjtzOjA6Ii
  44. I7czoxMDoiYXV0aG9ycnVsZSI7czowOiIiO3M6MTE6Im1lc3Nh
  45. Z2VydWxlIjtzOjEyNzoiPHRkIHZhbGlnbj0idG9wIiBjbGFzcz
  46. 0ibWFpbiI+W21lc3NhZ2VdPHRkIHdpZHRoPSIyMCI+PGltZyBz
  47. cmM9ImltYWdlcy9waXhlbF90cmFucy5naWYiIHdpZHRoPSIyMC
  48. IgaGVpZ2h0PSI0MiIgYm9yZGVyPSIwIj48L3RkPiI7czoxMzoi
  49. bWVzc2FnZWZpbHRlciI7czowOiIiO3M6MTU6Im1lc3NhZ2VwYW
  50. dldHlwZSI7czo0OiJwYWdlIjtzOjE1OiJtZXNzYWdlcGFnZXJ1
  51. bGUiO3M6MDoiIjtzOjE4OiJtZXNzYWdlcGFnZXVybHJ1bGUiO3
  52. M6MDoiIjtzOjIxOiJtZXNzYWdlcGFnZXVybGxpbmtwcmUiO3M6
  53. MDoiIjtzOjE0OiJtZXNzYWdlcmVwbGFjZSI7czowOiIiO3M6MT
  54. Y6Im1lc3NhZ2VyZXBsYWNldG8iO3M6MDoiIjtzOjg6ImF1dG90
  55. eXBlIjtzOjE6IjEiO3M6MTE6IndpbGRjYXJkbGVuIjtzOjE6Ij
  56. AiO3M6MjA6InN1YmplY3R1cmxsaW5rY2FuY2VsIjtzOjA6IiI7
  57. czoyMDoic3ViamVjdHVybGxpbmtmaWx0ZXIiO3M6MDoiIjtzOj
  58. E2OiJzdWJqZWN0dXJsbGlua3BmIjtzOjA6IiI7czoxNjoic3Vi
  59. amVjdGtleWNhbmNlbCI7czowOiIiO3M6MTA6Im1lc3NhZ2VrZX
  60. kiO3M6MDoiIjtzOjE2OiJtZXNzYWdla2V5Y2FuY2VsIjtzOjA6
  61. IiI7czoxMzoibWVzc2FnZWZvcm1hdCI7czoxOiIxIjtzOjIwOi
  62. JtZXNzYWdlcGFnZXVybGxpbmtwZiI7czowOiIiO3M6NzoidWlk
  63. cnVsZSI7czozOiIxfDIiO3M6MTU6ImRlZmF1bHRkYXRlbGluZS
  64. I7czoxMDoiMTI3NTQ4Mzk3MCI7czo3OiJ2ZXJzaW9uIjtzOjM6
  65. IjcuNSI7fQ==
复制代码
规则测试都能有结果,但运行就是无结果。
哪位大侠指导一下。
回复  

使用道具 举报

2#
发表于 3-6-2010 14:19:43 | 只看该作者
不懂,这是什么东西?
回复  

使用道具 举报

3#
 楼主| 发表于 3-6-2010 14:22:37 | 只看该作者
自动抓取网站内容。类似WEB SPIDER
回复  

使用道具 举报

4#
 楼主| 发表于 3-6-2010 15:48:22 | 只看该作者
会用了,supersite 采集器真不错。
回复  

使用道具 举报

5#
发表于 3-6-2010 15:52:43 | 只看该作者
想乱发广告吗
回复  

使用道具 举报

6#
 楼主| 发表于 3-6-2010 16:03:45 | 只看该作者
回复  

使用道具 举报

7#
发表于 6-6-2010 16:25:44 | 只看该作者
你这玩意不好。

这种都是预设规则的,目标网站哪怕是去掉一个div或者多加一个div都会失效。

有两种比较好的方法
* 研究下readability.js   智能的判断内容
* 自己写xpath解析

前者写好了,spide放出去什么都不用管了
后者写好了,如果有错很容易修正

评分

参与人数 1威望 +20 收起 理由
trisun + 20 谢谢分享!

查看全部评分

回复  

使用道具 举报

8#
 楼主| 发表于 6-6-2010 19:50:31 | 只看该作者
原帖由 cfk 于 6-6-2010 16:25 发表
你这玩意不好。

这种都是预设规则的,目标网站哪怕是去掉一个div或者多加一个div都会失效。

有两种比较好的方法
* 研究下readability.js   智能的判断内容
* 自己写xpath解析

前者写好了,spide放出去什 ...


有详细一点的信息吗?
回复  

使用道具 举报

9#
发表于 6-6-2010 20:47:01 | 只看该作者
谢谢分数。

我拿一段我得代码出来得瑟一下,
        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 编辑 ]

评分

参与人数 2威望 +90 收起 理由
ubuntuhk + 40 你太有才了!
coredump + 50 你太有才了!

查看全部评分

回复  

使用道具 举报

10#
发表于 6-6-2010 21:01:48 | 只看该作者
我觉得光是采集不过瘾,过瘾的是通过采集给数据增加附加值。

我给你份我搞的东西看(偷看别人的销售数据)
https://spreadsheets.google.com/ ... RHc&output=html

采集会有版权问题,通过分析采集来的数据(metadata)制造新的价值就不会有版权问题了。

评分

参与人数 3威望 +75 收起 理由
trisun + 20 谢谢分享!
wellhome + 5 级别不够, 只能给5分 是sorry.
coredump + 50 你太有才了!

查看全部评分

回复  

使用道具 举报

11#
发表于 6-6-2010 21:22:48 | 只看该作者
原帖由 cfk 于 6-6-2010 16:25 发表
你这玩意不好。

这种都是预设规则的,目标网站哪怕是去掉一个div或者多加一个div都会失效。

有两种比较好的方法
* 研究下readability.js   智能的判断内容
* 自己写xpath解析

前者写好了,spide放出去什 ...

[size=13.8889px]readability.js 真是个好东西啊,多谢分享,非常感兴趣[size=13.8889px][size=13.8889px]
回复  

使用道具 举报

12#
发表于 6-6-2010 23:09:22 | 只看该作者
有什么程序能自动抓取网页,然后email发送的吗? 我一直想找个这样的软件,上班时候就不用开浏览器了,收邮件就可以看了
回复  

使用道具 举报

13#
发表于 7-6-2010 08:07:54 | 只看该作者
原帖由 Fernando 于 6-6-2010 23:09 发表
有什么程序能自动抓取网页,然后email发送的吗? 我一直想找个这样的软件,上班时候就不用开浏览器了,收邮件就可以看了


RSS2Email
回复  

使用道具 举报

14#
发表于 7-6-2010 10:24:28 | 只看该作者
回复  

使用道具 举报

15#
 楼主| 发表于 7-6-2010 13:48:09 | 只看该作者
回复  

使用道具 举报

16#
发表于 10-6-2010 00:56:01 | 只看该作者
向高手学习,这个贴子要mark
回复  

使用道具 举报

17#
发表于 10-6-2010 01:01:24 | 只看该作者
请教一下CFK,有没有C++的开源库功能类似于xpath和readability.js 的?
回复  

使用道具 举报

18#
发表于 10-6-2010 12:23:23 | 只看该作者

回复 #17 kaile 的帖子

QT啦,4.6版里有Xpath和XQuery
回复  

使用道具 举报

19#
发表于 10-6-2010 20:46:29 | 只看该作者
很多人用python的解析器
简易xpath生成器 selectorgadget

我在做lisp的流式xml解析器。
回复  

使用道具 举报

20#
发表于 11-6-2010 23:08:24 | 只看该作者
JDK自带的xpath,不过不算好用,API有点复杂。我做了一个简化版本的。
不过自己使用直接用dom4j的,我不喜欢用dom4j的版本,原因是不想再弄一套api来跟踪。
另外saxon9的xquery不错。

我正在考虑groovy

原帖由 coredump 于 10-6-2010 12:23 发表
QT啦,4.6版里有Xpath和XQuery
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+10, 30-4-2024 17:51 , Processed in 0.066104 second(s), 40 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表