批量抓饭脚本:一次性打包输出自己全部的饭否消息!
一直盼望哪位大侠能写个“批量导出饭否消息”的程序。咨询过饭否官方,fanfou还没有批量导出全部消息的api。现有的api最多只能导出20条消息。于是我使用perl+curl实现了全部抓取的功能。现在还是perl脚本版的。有对话框界面的不急,慢慢来。
已经实现的功能:
- 根据fanfou id,批量导出fanfou消息。
- 导出的内容有:fanfou消息本身,该消息发布的时间,该消息的id号,形如oj1Wil-g4wk。
Todo List:
- 做成gui版的。
- 批量删除、分享(自己的消息)。
- 使用sqlite实现本地存储、sql语言查询。
- 支持标签分类。需要在发布消息时在消息开头或末尾加上[]、[]等分隔符。
如果您想批量导出自己的fanfou消息,同时知道如何运行perl脚本,那么直接改动下面的脚本即可;如果您不愿自己动手,我可以代劳。您只须加我(zhasm)为好友,然后饭密我一条消息,发个请求即可。这是为了保证您要抓取的,是您自己的内容。敬请谅解。我会在最晚2个工作日之内发给您。
饭密给我的消息,可以包含如下内容:
- 您的邮箱。
- 分隔符,默认是tab,您也可以;、,诸如此类。
- 序号(1-N,还是N-1.默认是n-1)。
- 是否加上时间戳。(默认包含)。
- 是否加上消息的id. 此处指的是fanfou为您每一条消息自动生成的形如oj1Wil-g4wk序列号。如果您不明白此为何物,可不必包含此项。如果批量删除或批量分享,则保留此项。
好了,以下是代码部分,附有注释。您如果在您的机器中运行此代码,需确保安装有WWW::Curl::Easy模块。需要说明的是,该脚本的运行速度取决于网络速度与机器自身速度。在我的机器上,抓取700余条消息大约花费3分钟时间。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/usr/bin/perl -w # # this script is to grab all the fanfou items for the given id. # rex.zhasm rex[at]zhasm[dot]com # 27 jan 2007 # # use strict; use WWW::Curl::Easy; my $output="output.txt"; open(OUT,">$output") or die "can not open file to out put!"; #print all the messages into the file: output.txt"; my $id="zhasm"; #specify the user's id. my $url = "http://fanfou.com/".$id; # Init the curl session my $curl= WWW::Curl::Easy->new() or die "curl init failed!\n"; $curl->setopt(CURLOPT_URL, $url); |


我也是觉得这个很麻烦的。
还有,如果加一个日历视图感觉也不错。
zhasm,你好,请问怎样安装www::curl::easy包?帮助文档中的“1. Specify your curl include directory on the line "my @include = qw()".”没有看懂。
谢谢!
如果在linux下很好办,好像在ubuntu的apt源里,就有perl-curl模块,直接勾选安装即可。在windows下,是需要编译环境的,反正我一直没有安装成功过perl的curl模块。因此,我如果不得不使用perl+curl,我就使用perl的exec(或system)函数来调用curl.exe文件,实现curl的下载功能。现在,我更倾向于使用python语言了,具体可见我的另一篇文章:使用饭否新版API编写批量抓取饭否消息的程序(http://iregex.org/blog/fanfou-msg-extractor-via-n...