昨天写道关于不支持Rss输入的网站,可以自制Rss的部分,但是Ponyfish的功能实在是太弱了,只能通过URL的辨别来生成Rss,如果对于URL不规则的网站就没有办法了。在昨天提到的介绍文章里面提到了一个网站,Feed43,进去试了试,发现很好但是很难用。Feed43抓取的不只是post的URL,而是整个页面的html代码,然后通过里面的规则过滤,得到输出的函数,再生成的Feed的。虽然复杂,但是却更加容易自定义,这里仅对本blog进行测试。

点击Create your own feed后,系统自动分配你个feed生成页面和feed地址,第一步输入源页面地址。还可以输入字符编码,可惜不支持GB的中文编码,默认的示UTF-8的。reload之后,Feed43抓取整个页面的html,接着就要定义规则了,这个需要你有点html代码的知识。看下抓取的代码,可以发现每个post其实是有规律的,哪怕是使用最笨拙的表格套表格形式的html,也是有规律的。对于我的blog而言,一段post的代码一般是这样的:

<div class=”PostHead”>

<h1><a title=”Permanent Link to [文章标题]” href=”[文章链接]” rel=”bookmark”>[文章标题]</a></h1>

<ul>

<li class=”PostAuthor”>[作者]</li>

<li class=”PostCateg”>Filed under: <a href=”[分类链接]” title=”View all posts in [文章分类]” rel=”category”>[文章分类]</a></li>

</ul>

</div>

<small class=”PostTime”><strong>Saturday</strong><br />[文章发布时间]</small>

<div class=”PostContent”>

[文章内容]

</div>

<div class=”PostDet”>

<ul><li class=”PostCom”><a href=”[评论链接]” title=”Comment on [文章内容]“>[评论数量]</a></li></ul>


</div>

</div>



之后我们需要定义要提取的部分,Feed43提供两个可用的函数{*}通配符和{%}提取函数,把不需要的部分用{*}替换的,把需要导出的部分用{%}代替,然后进行过滤。但是为了每个函数都可以调用,{}前后都必须有字段才能过滤。比如上面这段,因为支取文章链接、文章标题和文章内容三段,就可以用用这个规则:

<div class=”PostHead”>{*}href=”{%}” rel=”bookmark”>{%}</a>{*}<div class=”PostContent”>{%}</div>


提取后得到三个结果:

{%1} = [文章链接]


{%2} = [文章标题]


{%3} = [文章内容]



接下来要定义输出的feed了,标题链接和简介都比较容易,主要是Rss item这段需要把上面的结果放到里面,特别是文章内容模版这个部分,有的时候抓取可能忽略了部分html代码段,这内容模版里面需要补上。好在这个blog还是比较规则的,不需要补什么,只要把{%3}放在里面就可以了。

最后就得到了feed。Feed43有多个方案,免费方案里规定每隔6个小时抓取一次源页面,而且源页面的大小不能超过100KB,所以有可能抓取不成。如果注册,还可以对已经生成feed进行管理。

不过,这真是件累人的事。

0 comments