我正在用Ruby和Nokogiri进行数据抓取。是否可以在我的电脑中下载和解析本地文件?用open-uri打开本地文件
我:
require 'open-uri'
url = "file:///home/nav/Desktop/Scraping/scrap1.html"
提示错误为:
No such file or directory @ rb_sysopen - file:\home/nav/Desktop/Scraping/scrap1.html
我正在用Ruby和Nokogiri进行数据抓取。是否可以在我的电脑中下载和解析本地文件?用open-uri打开本地文件
我:
require 'open-uri'
url = "file:///home/nav/Desktop/Scraping/scrap1.html"
提示错误为:
No such file or directory @ rb_sysopen - file:\home/nav/Desktop/Scraping/scrap1.html
如果你想分析与引入nokogiri一个本地文件,你可以不喜欢这样。
file = File.read('/home/nav/Desktop/Scraping/scrap1.html')
doc = Nokogiri::HTML(file)
这就是我按照文档所做的。
f = File.open("//home/nav/Desktop/Scraping/scrap1.html")
doc = Nokogiri::HTML(f)
f.close
当你打开浏览器中的本地文件,在地址栏中的URL显示为:
file:///Users/7stud/Desktop/accounts.txt
但是,这并不意味着你使用的格式在Ruby脚本。您的Ruby脚本不会将文件名发送到浏览器,然后让浏览器检索该文件。你的Ruby脚本直接搜索你的文件系统。
对于URL也是如此:您的Ruby脚本不会要求您的浏览器从互联网上检索页面,Ruby会通过使用您系统的网络接口发送请求来检索页面本身。毕竟,浏览器和Ruby程序都只是计算机程序。你的浏览器可以通过网络完成,Ruby程序也可以完成。
这个工作对我来说:
require 'open-uri'
text = open('./data.txt').read
puts text
你必须让你的路径正确,虽然。我可以考虑使用open()
的唯一原因是,如果您有一组文件名和URL混合在一起。如果这不是你的情况,请参阅new2code的答案。
我会利用机械化和本地保存文件,然后用引入nokogiri解析它像这样:
# Save the file
agent = Mechanize.new
agent.pluggable_parser.default = Mechanize::Download
current_url = 'http://www.example.com'
file = agent.get(current_url)
file.save!("#{Rails.root}/tmp/")
# Read the file
page = Nokogiri::HTML::Reader(File.open(file))
希望帮助!
不可能。你所有的代码都需要'open-uri',然后给一个变量分配一个字符串。 – 7stud 2014-09-14 03:10:06
为什么使用OpenURI打开一个文件时可以自己使用'open'? – 2014-12-05 21:03:05