大漠落日

while(!dead) study++;
posts - 46, comments - 126, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

天涯帖子快捕

Posted on 2011-03-12 16:03 乱78糟 阅读(3236) 评论(12)  编辑 收藏 引用 所属分类: 免费小软件开源

闲暇之余,小哥我爱泡在天涯论坛上看帖,最常逛的就是煮酒论史和经济杂谈。

天涯就像一个热闹的大茶馆,泡上一杯热茶,放着自己喜欢的音乐,悠然的点开自己关注的帖子。巴特,广告,吵杂的顶贴让小哥我悠闲的心情大打折扣。

从开始的无视,到后来的忍受,到最后的爆发,小哥我终于愤怒了——难道就没有一款好用的工具吗?

百度、谷歌、必硬之,结果都不满意。

奶奶的,咱好歹也是一写程序的,不就是一个抓帖子的小软件吗?小哥自己捣鼓一个!

经过5天的分析,编码,测试,终于,小哥我满意的笑了。





抓贴截图:



这里提供下载,希望能够帮助同是天涯客一点小忙。如果发现了BUG,或者有好的建议,一定要告诉小哥我哦,呵呵。

已经在XP,2003,WIN7下测试过,解压即可运行。

最新版本:1.0 beta3   (图不再更新了,等v1.0正式版推出,代码一并提供)

点击下载

既然有人想要代码,那么等程序版本稳定了,代码一定奉上,到时候别嫌小哥我代码写的臭哈,呵呵。


=======================[2011.3.28]=============================

额,实在是抱歉,大脑一发热这玩意就整出来了,可是热情一消散,加上最近挺忙,小哥立即跟泄了气的皮球一样,再也不想去碰这东西。

其实在使用的时候也发现不少BUG,还有不少网友提出很多颇有建设性的建议和意见,我觉得都很好,但是,整个人就是懒得去修复和新增新的功能,1.0正式版也不会再出(至少是在我手上不会出了)。

不少网友想要代码,其实代码的原理和流程非常简单,小哥觉得说破了就是哄人的小把戏,可能大家没有忘这方面想把:)。


我想我还是在提供代码之前就代码原理和路程先啰嗦几句吧:

1)利用IHTMLDocument2获取网页信息;

2)根据天涯帖子的格式内容(分析网页得出),解析、获取、修改需要网页信息内容,移除不需要的内容比如广告之类;

3)将已经重新构造的html数据流保存为相应的文件(html或者txt)。


整理出来的一些还未实现的新功能和有待改善的地方:

1)指定页面抓取(很简单,含有页面跳转按钮时你会发现天涯的程序员把所有分页的链接全部按顺序隐藏到了html代码里,稍加遍历就可得到)

2)分页合并,将多个分页的内容合并到一个分页里面

3)自动跟踪抓取,记录用户已经抓取的帖子和页数,以后从这个地方自动抓取,很实用的功能吧:)

4)删除回复某人的帖子冗余内容(比如,LZ回复某用户通常是:

作者:xxxx 回复日期:2011-02-11 14:47:36  
LZ这帖子写的也忒好了!

=========

谢谢)

5)自动回帖,这个功能太邪恶鸟,其实实现起来也灰常简单(原理不透露也不要问我,自己慢慢琢磨和分析天涯的html的代码就明白了)

6)多线程抓取,当前为一个线程抓,貌似有点慢- -

7)。。。很多细微的功能,不一一道出了,感兴趣的拿到代码自己尝试去吧。


已经发现的BUG:

1)极少数帖子会导致无法抓取,原因是IHTMLDocument2无法顺利下载页面,程序无法收到FINISH消息,导致挂死,只能终止程序,原因小哥还没弄清楚,热切盼望懂的哥们给个解答,感激涕零!!

2)部分帖子,比如上了红黑板的(就是标题颜色为红脸或者黑脸,而且前面还有相颜色的小人笑脸标记的帖子),HTML格式和通常的不一样,导致抓取不到帖子实质内容,很好改的

3)IE6内核的浏览器脱机浏览抓取的帖子会变形,CSS文件导致,也比较好改

目前发现的就这么多。


废话了这么多,希望的就是有能力有时间有兴趣的同学可以搞个好用的抓取工具来,我也好偷懒享享福:)。

代码仓促完成,里面有大段C-V的重复代码,也懒得改了,毕竟这是一个小玩具而已,对吧?


代码已经提交到在googlecode上,注意,svn checkout需要密码,而获取密码那个链接被Q掉了,记得先翻Q把密码搞到手(qiang在c++ blog上尽然是一个违禁字,OMG, 伟大的天……朝!)。

代码本来想随便用的,国人对版权木有概念,后来想想,算了,还是GPL吧,共同学习而已,感兴趣的同学可以修改维护该代码,你可以联系我: yzljlss#126.com,我把你加到开发者列表里。你也可以自己另起炉灶,公不公布源代码木有关系,记得好用的工具给我邮一个呀:)

google code 主页:http://code.google.com/p/ty-bbs-capture/

代码版权:GPL 


最后de呼唤:有好用的抓取工具记得一定要给小哥我U一个!

Feedback

# re: 天涯帖子快捕[未登录]  回复  更多评论   

2011-03-12 17:04 by uniker
好强,用了一下,好用~

# re: 天涯帖子快捕[未登录]  回复  更多评论   

2011-03-12 17:07 by uniker
抓取该地址http://www.tianya.cn/publicforum/content/develop/1/218143.shtml
出现错误提示
RunTime Error!

# re: 天涯帖子快捕  回复  更多评论   

2011-03-12 21:45 by ccsdu2009
我最喜欢看煮酒和情感2个
哈哈

# re: 天涯帖子快捕[未登录]  回复  更多评论   

2011-03-13 01:50 by sand
代码一起贴出来?

# re: 天涯帖子快捕[未登录]  回复  更多评论   

2011-03-13 07:45 by fireemissary
我还以为有代码呢

# re: 天涯帖子快捕  回复  更多评论   

2011-03-14 17:54 by Soli
求代码。。。

# re: 天涯帖子快捕  回复  更多评论   

2011-03-15 17:38 by 乱78糟
@uniker
我试了一下,发现是抓取图片的时候刚好那个图片不存在无法被抓取,崩溃了,非常感谢反馈,我已经修复,beta3马上发布,正式版公布的时候一并提供代码,到时候,大家别嫌我代码写的臭哈。
请持续关注~~呵呵

# re: 天涯帖子快捕  回复  更多评论   

2011-04-29 11:16 by SinoTOP
感谢你,能抓图的天涯帖子下载工具,真不多,你这个是最好用的。

# re: 天涯帖子快捕  回复  更多评论   

2011-08-04 16:15 by user
我抓一个天涯旅游中的帖子,很不幸,图片全都是同一个假图片“tianya_content_original.gif”。怎么办?

# re: 天涯帖子快捕  回复  更多评论   

2011-09-19 09:38 by 点点滴滴
人家VB就搞定了
http://www.newhua.com/soft/117669.htm

# re: 天涯帖子快捕  回复  更多评论   

2012-04-10 20:47 by ddd
现在貌似不能用了..

# re: 天涯帖子快捕  回复  更多评论   

2012-07-10 18:54 by yahle
因为天涯的帖子图片通过js改为按需下载(页面滚动后才显示),因此下载图片基本是错误的。
如果大家有条件,自己上code.google.com下载代码做修正。
在TianyaParse.cpp文件的1041行


_bstr_t t("src");
改为
_bstr_t t("original");

就能下载到图片了。
不过在跑的时候,经常会发生下载错误(403没有权限)
原因是在设置下载图片的 referer 时,传入的 pApp->m_pageWrap.currentURL 有误,暂时没发现哪个地方造成的,但
通常多下载几次就可以将图片下载下来,也就懒得帮他修正了。

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理