锁定老帖子 主题:爬取豆瓣个人日记
精华帖 (14) :: 良好帖 (0) :: 新手帖 (12) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-12
最后修改:2010-07-13
先生的日记,看了许久了,觉得果然不错。最近正好在玩Hpricot,便写了个小程序,把这位先生的个人日记全部爬了下来
看推特上有人推荐豆瓣上一位
require 'rubygems' require 'hpricot' require 'string' require 'open-uri' require 'fileutils' def write_file(file_content,title) path = "E:\\" file_name = path+title+".txt" file = File.open(file_name,"w+") file.puts title file.puts file_content file.close end def get_content_and_title(target_url) doc = Hpricot(open(target_url)) content = doc.search("pre.note") title = doc.search("div.note-header") write_file(content.inner_html.to_gbk,title.at("h3").inner_html.to_gbk) end def get_article_url(articles_url) doc = Hpricot(open(articles_url)) ele = doc.search("div.article") ele.each do |ab| arr = ab.children arr.each do |cd| begin attribute = cd.attributes['id'] rescue NoMethodError end if(not attribute.nil? and attribute.include? "note-") det = attribute.split("-") id = det[1] url = "http://www.douban.com/note/"+id get_content_and_title(url) end end end end def get_pages(articles_url) puts articles_url doc = Hpricot(open(articles_url)) ele = doc.search("span.next") get_article_url(articles_url) next_page = ele.at("a") while next_page next_page_url = next_page.attributes["href"] get_article_url(next_page_url) get_pages(next_page_url) end end get_article_url("http://www.douban.com/people/1272884/notes") 上面require ‘string’ 处理编码问题 require 'iconv' class String def to_gbk Iconv.iconv("GBK//IGNORE","UTF-8//IGNORE",self).to_s end def to_utf8 Iconv.iconv("UTF-8//IGNORE","GBK//IGNORE",self).to_s end def utf8? unpack("U*") rescue return false true end end 这个string是从hooopo君那里得来的 执行以上程序,可将风行水上先生的个人日记全部爬下来,每篇日记一个txt文件,可以慢慢品味。 我把这些文件打包传上来了,对代码不感兴趣但对文章感兴趣的同学可以看看 ps:本人是java党,所以代码写的像java一般还望大家见谅啊 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-07-12
最后修改:2010-07-12
http://www.iteye.com/topic/247944 當年qichunren被批真相.........
|
|
返回顶楼 | |
发表时间:2010-07-12
哈哈,当年qichunren那厮站内信还给我发过这个帖子的链接。标题是系统消息,里面第一句话是
引用 你的帖子被评为新手帖,封ID30天。
|
|
返回顶楼 | |
发表时间:2010-07-12
我已经不知道什么叫java了
|
|
返回顶楼 | |
发表时间:2010-07-12
如沐春风,颇有启发。
|
|
返回顶楼 | |
发表时间:2010-07-12
多少页的阿?你丫居然没被封。。
|
|
返回顶楼 | |
发表时间:2010-07-12
你这是ruby?
怎么看起来象Python |
|
返回顶楼 | |
发表时间:2010-07-13
最后修改:2010-07-13
Hooopo 写道 多少页的阿?你丫居然没被封。。
9页,也不多。 昨天程序写错了,被封了一会 |
|
返回顶楼 | |
发表时间:2010-07-13
iaimstar 写道 你这是ruby?
怎么看起来象Python 哈哈,不是吧 没用过python |
|
返回顶楼 | |
发表时间:2010-07-13
kaka2008 写道 Hooopo 写道 多少页的阿?你丫居然没被封。。
9页,也不多。 昨天程序写错了,被封了一会 然后用浏览器还能打开。。。这是为什么 求解释。。 |
|
返回顶楼 | |