• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

用Ruby批量获取电影的评分与影片信息

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

相信很多像我一样的技术宅喜欢窝家里看电影,现在的硬盘随随便便都是几百G好几T的,里面没个百部八十的都不好意思跟人打招呼。下得多了,但好电影真的不多,特别是像我这个大陆分类文件夹里,很多看完发现真的是浪费时间。用ruby写了个小程序,从豆瓣电影上扒评分跟影片信息,将它们拼接成一个html网页,处理一个文件夹里的电影后能得到类似于下面的结果:

你也可以扩充后,添加譬如:

1.在你硬盘每个电影文件名前面添加评分,这样你就可以通过点按名称排序来实现评分排序了

2.可以自动删除小于5/6分的电影

3....等

下面把代码贴出来,你需要用到的ruby库有:nokogiri(用来解析html),iconv(用来转码)

#encoding: utf-8
require 'open-uri'
require 'nokogiri'
require 'uri'
require "iconv"

def findMovieInfo(name)
  moviename= URI::escape(name)
  url="http://movie.douban.com/subject_search?search_text=#{moviename}&cat=1002"
  puts url
  doc = Nokogiri::HTML(open(url))
  item= doc.xpath('//tr[@class="item"]')

  if(item.count>0)
    return item[0].to_html()
  end
  return ''
end

fh = File.new("C:\\temp.html", "w")
fh.write '<!DOCTYPE html>
<html lang="zh-CN" class="ua-windows ua-webkit">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<table>'
@directory_path = "D:\\大陆\\"

if File.directory? @directory_path
  Dir.foreach(@directory_path) do |file|
      begin 
        if(File.basename(file)!='.'&&File.basename(file)!='..')
          conv = Iconv.new("utf-8", "gb2312")
          name= File.basename(file).gsub(File.extname(file),'')
          name=conv.iconv(name)
          fh.write findMovieInfo(name)
          fh.flush
        end
    rescue 
        puts '错误,跳过'
    end

  end
end
fh.write '</table></body></html>'
fh.close()

如果对你有用,看在帮你节省看烂片时间的份上,请不要吝啬3秒钟帮我点下推荐


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Ruby 多线程探索实践与归纳总结发布时间:2022-07-14
下一篇:
3 月编程排行榜:Ruby 重回前十,Kotlin 突围发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap