顺便写个Feed43的教程贴在这里,免得我日后自己忘了:
Feed43支持把静态html页面烧制成rss输出,并且可以精确的指定抓取页面的哪些内容。 使用者需要html语言基础。
一、注册ID
1) 在feed43.com的首页点击Create Account,进入注册页面。
2) User Name后面填用户名,Password和Password (retype)处输两遍密码,E-mail处输真实的email地址,需要邮件激活。然后点击Creat按钮。去邮箱中收邮件激活自己的ID。
二、创建一个feed
1) 登陆后在首页点击Create your own feed,进入创建Feed页面。
2) 第一步:设定要抓取的页面地址
在Step 1. Specify source page address (URL)下面有两个对话框,左边的Address*: (Open in browser) 当中输入要抓取的页面地址,我以http://www.kaobanma.cn/doggiegame/simple/index.php?t224.html 这个页面为例。那么左边的对话框中就输入这个地址。右边的对话框Encoding中输入页面编码,phpwind论坛用的都是UTF-8,右边的对话框输UTF-8。
然后点击Reload按钮。如果链接地址没错,页面下面出现一个代码框Page Source,其中读取了整个原始页面的html代码。
3) 第二步:定制抓取规则
在Step 2. Define extraction rules下面有两个对话框。上面的是Global Search Pattern。这个对话框用于指定你要搜索的代码范围。我觉得从原理上来说,可以把整个页面全部设定为搜索范围,不过肯定会降低搜索效率。所以需要精确界定一下搜索网页源代码中的哪些部分:
我以http://www.kaobanma.cn/doggiegame/simple/index.php?t224.html 的页面代码为例。页面头部和尾部的“登录 -> 注册 -> 回复主题 -> 发表主题”等字样之前,页面尾部的“查看完整版本: [-- 实验rss功能 --] [-- top --]”等字样之后,都是不需要的部分,我只要其间的代码即可。因此,我需求的范围可以写作:
"http://www.kaobanma.cn/doggiegame/post.php?fid=9">发表主题{%}top</a>
{%}是变量,代表页面源代码之中从“"http://www.kaobanma.cn/doggiegame/post.php?fid=9">发表主题”字段到“top</a>”字段之间的全部代码。上面写法的含义,就是指定在“http://www.kaobanma.cn/doggiegame/post.php?fid=9">发表主题”字段到“top</a>”字段之间的代码中搜索。
下面的Item (repeatable) Search Pattern对话框用来指定搜索规则。首先分析每一层楼的源码,可以看出每层楼是一个单独的<table>表格。例如第2楼的完整代码是:
<table cellspacing="1" cellpadding="1" width="98%" class="i_table" align="center"> <tr> <td> <table cellspacing="0" cellpadding="3" width="100%"> <tr class="head"> <td><b>bbsriver</b></td> <td align="right" class="smalltxt">2009-07-05 14:14</td> </tr> <tr bgcolor="#FFFFFF"> <td colspan="2" class="tpc_content">
帖子的rss功能?</td> </tr> </td></tr> </table> </td></tr> </table><br />
这就是一篇回复的全部代码。所有的回复都符合这个规律。我只需要其中的三个数据:“bbsriver”,这是发帖人,“2009-07-05 14:14”,这是发帖时间;“帖子的rss功能?”这是帖子正文。因此我在对话框中输入:
<td><b>{%}</b></td>{*}<td align="right" class="smalltxt">{%}</td>{*}<td colspan="2" class="tpc_content">
{%}</td>
{%}如前所述,代表我需要抓取的变量;{*}也是个变量,代表可以省略不计的代码。从源代码中可以看到,发帖人“bbsriver”的这行代码是:
<td><b>bbsriver</b></td>
则我把表达式写成:
<td><b>{%}</b></td>
这个写法代表<td><b>和</b></td>之间的字段是我需要的第一个变量。
发帖时间“2009-07-05 14:14”这行字的源代码是:
<td align="right" class="smalltxt">2009-07-05 14:14</td>
则我写成:
<td align="right" class="smalltxt">{%}</td>
这个写法代表<td align="right" class="smalltxt">和</td>之间的字段是我需要的第二个变量。
帖子正文“帖子的rss功能?”的源代码是:
<td colspan="2" class="tpc_content">
帖子的rss功能?</td>
则我写成:
<td colspan="2" class="tpc_content">
{%}</td>
这个写法代表<td colspan="2" class="tpc_content">和</td>之间的字段是我需要的第三个变量。
然后,用{*}符号连接上面三段表达式,代表这三段表达式之间的部分都可以省略,得到的表达式就是:
<td><b>{%}</b></td>{*}<td align="right" class="smalltxt">{%}</td>{*}<td colspan="2" class="tpc_content">
{%}</td>
将它填到Item (repeatable) Search Pattern对话框之中。
4) 然后点击Extract按钮,网站自动计算之后,把页面代码中所有符合要求的变量都抽取出来,列在页面下方:
Item 1 {%1} = bbsriver {%2} = 2009-07-05 13:39 {%3} = rt
Item 2 {%1} = bbsriver {%2} = 2009-07-05 14:14 {%3} = 帖子的rss功能?
Item 3 {%1} = bbsriver {%2} = 2009-07-05 14:25 {%3} = 测试2
Item 4 {%1} = bbsriver {%2} = 2009-07-05 19:14 {%3} = 测试3
Item 5 {%1} = bbsriver {%2} = 2009-07-05 19:33 {%3} = 测试4
Item 6 {%1} = bbsriver {%2} = 2009-07-05 20:36 {%3} = 测试5
Item 7 {%1} = bbsriver {%2} = 2009-07-05 20:52 {%3} = 测试6
Item 8 {%1} = bbsriver {%2} = 2009-07-05 21:58 {%3} = 测试7
Item 9 {%1} = bbsriver {%2} = 2009-07-05 22:18 {%3} = 测试8
Item 10 {%1} = bbsriver {%2} = 2009-07-05 22:55 {%3} = 本台消息:我市昨天召开市政府办公会,针对我市周边县市出现的狂犬病疫情,布置相应防控措施。政府要求,自即日起,我市所有宠物商店暂时停业。养犬的市民必须在限定时间内前往兽医院为犬只接种狂犬病疫苗。禁止携带犬只出现在公共场所。城管部门将加大对在公共场所和野外活动的无主犬只的打击力度。<span style="display:none"> &mLi^e </span> <br /><span style="display:none"> :53|}?p8 </span> <br />市政府办公室的兰秘书向记者介绍,今年1月份以来,我市周边县市狂犬病疫情传播严重。11个县区的186个乡镇中,被犬类咬伤或抓伤人数累计达523人次,其中已有8人发病死亡。目前我市虽然还没有出现狂犬病犬只伤人的报告,但必须未雨绸缪,狠抓防控落实,严防狂犬病在我市的流行。政府呼吁养犬市民关注自家犬只健康状况,尽量减少犬只的外出活动。
Item 11 {%1} = bbsriver {%2} = 2009-07-05 22:58 {%3} = Xfruits 是一个关注RSS的众多应用的服务。提供了Aggregator RSS,RSS to Web, RSS to Mobile, Post to RSS, RSS to PDF, RSS to Mail, RSS to OPML, OPML to Mobile, Mail to RSS、RSS to Voice和RSS to My Blog等功能。其中RSS to Mail就是通过电子邮件给您的RSS feed 预订一个提醒。 RSS feed 的新文章将重新分组发送到您的邮箱中,您可以订制每小时或每天发送;<span style="display:none"> V}FRPI3 </span> <br /><span style="display:none"> y<8'aEWw<_ </span> <br /><span style="display:none"> rYu]~5xN </span> <br /><span style="display:none"> FUl"o#j </span> <br /><span style="display:none"> B.&G6gbg </span> <br />Rssfwd 提供的服务很方便,无需注册,提交了自己想要订阅的Blog RSS地址,然后再填写自己的email就行了,初次登记的email需要进行邮件确认。剩下的事情就交给这个网站做,每当订阅的blog有更新的时候,便会发到email,每一封邮件的下方都带有退订的链接,也便于退订;<span style="display:none"> 0e)P e<] </span> <br /><span style="display:none"> NBe"C 0 </span> <br /><span style="display:none"> g0~ (R' </span> <br /><span style="display:none"> #XK7Ia0y </span> <br />feedblitz 的主要功能是 : 为网站或Blog添加邮件订阅功能,将RSS Feeds转为邮件形式,向用户提供邮件更新。允许设置多个邮件订阅Feed, 管理多个网站可设置E-MAIL发送频率 可以给Feed加密码(适合团队内部成员使用)可高度自由的定制订阅图标,包括颜色、字体、布局甚至LOGO可随意更改原始feed地址而无需重新通知已订阅用户可显示邮件订阅量及其订阅人E-MAIL ,在FeedBurner推出自己的邮件订阅的功能以前,它的Email Subscriptions服务是由第三方网站FeedBlitz提供,其实力可见一斑;<span style="display:none"> WHY7hIFvuj </span> <br /><span style="display:none"> c?2!#b5 </span> <br /><span style="display:none"> I>^ )2! </span> <br /><span style="display:none"> &ONK|Ej </span> <br />feedmailer feedmailer能对feed投递的频率与条数进行设置,并可设置投递,另外有个Directory,是一个feedmailer热门feed列表,涵盖比较广,如果有喜欢的feed也可以通过feedmailer进行订阅;<span style="display:none"> ]i3`3 </span> <br /><span style="display:none"> nj#}E- </span> <br /><span style="display:none"> n02<Ls : </span> <br /><span style="display:none"> ,w~DfQaY; </span> <br /><span style="display:none"> loOP>fCNN` </span> <br />sendmerss 的前身是R-Mail ,用户只需要输入相应的RSS Feed以及自己的Email地址即可通过电子邮件来订阅自己喜爱的Feed。提供RSS订阅Widget以及全面支持OPML导入;<span style="display:none"> c*M}`1;m(T </span> <br /><span style="display:none"> yTGKJ{CTHs </span> <br /><span style="display:none"> p[FX7AAlQ </span> <br /><span style="display:none"> q[_K?ia </span> <br /><span style="display:none"> Y`K#R@^ </span> <br />emailrss RSS 邮天下是一种用Email订阅RSS更新信息的功能,它是完全免费的!输入有效的RSS和Email后,点击“马上订阅”,并在收到由RSS邮天下发出来 的订阅确认邮件里,点击确认链接,系统提示订阅成功后即可定期收到该RSS的更新提醒。每封RSS邮天下发送的邮件,在邮件底部均有一个“退订”链接,点击该链接即可马上退订该RSS更新提醒;
Item 12 {%1} = bbsriver {%2} = 2009-07-05 23:15 {%3} = 测试9
Item 13 {%1} = bbsriver {%2} = 2009-07-06 12:58 {%3} = 测试10
Item 14 {%1} = bbsriver {%2} = 2009-07-06 15:24 {%3} = 测试11
Item 15 {%1} = bbsriver {%2} = 2009-07-06 17:04 {%3} = 测试12
Item 16 {%1} = bbsriver {%2} = 2009-07-06 18:02 {%3} = 测试13
这其中,{%1}、{%2}、{%3}分别代表了我需要的3类变量:发帖人、发帖时间、帖子正文。每个Item是rss更新中的一个条目。
5) 然后进入第三步:设置输出格式
在Step 3. Define output format下面有7个对话框。前3个都是自动完成的,不用修改。第4个对话框Item Title Template是每个条目的标题。我写成:
{%1}@{%2}
即:发帖人@发帖时间,输出的格式就像:bbsriver@2009-07-05 14:14
中间的Item Link Template可以定义每个条目的链接,我不需要,跳过。下面的Item Content Template即条目正文。我直接写成:
{%3}
即只显示帖子正文,别的什么都不要。
如果勾选了下方的Merge all items into single one, optionally applying global template,会把所有条目的内容连成一个条目输出。我不需要,因此也不勾选。现在直接点Preview按钮,页面下方就会出现预览了。
最下方的Feed URL is后面给出的就是这个Feed的地址:http://feed43.com/2584342781276861.xml。
总结:抓取phpwind论坛页面的时候, Address*: (Open in browser) 后面填要抓取的打印预览网页地址 Encoding后面填UTF-8
然后点击Reload按钮
Global Search Pattern后面填"http://www.kaobanma.cn/doggiegame/post.php?fid=9">发表主题{%}top</a> Item (repeatable) Search Pattern后面填: <td><b>{%}</b></td>{*}<td align="right" class="smalltxt">{%}</td>{*}<td colspan="2" class="tpc_content">
{%}</td>
然后点击Extract按钮
Item Title Template后面填{%1}@{%2} Item Content Template后面填{%3}
其他地方都不用填选,然后点击Preview按钮,
就可以直接生成一个phpwind论坛打印预览页面的rss。即便不懂html的人,直接按总结中的这几个步骤去做就行。 |