用Ruby批量获取电影的评分与影片信息
相信很多像我一样的技术宅喜欢窝家里看电影,现在的硬盘随随便便都是几百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秒钟帮我点下推荐
欢迎转载,但请保留链接 http://www.cnblogs.com/limlee
--- GeekLion
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库