首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用open-uri打开本地文件

使用open-uri打开本地文件
EN

Stack Overflow用户
提问于 2014-09-14 03:21:50
回答 4查看 5.4K关注 0票数 1

我有:

代码语言:javascript
复制
require 'open-uri'

url = "file:///home/nav/Desktop/Scraping/scrap1.html"

它给出的错误如下:

代码语言:javascript
复制
No such file or directory @ rb_sysopen - file:\home/nav/Desktop/Scraping/scrap1.html
EN

回答 4

Stack Overflow用户

发布于 2014-09-14 03:27:53

如果你想用Nokogiri解析一个本地文件,你可以这样做。

代码语言:javascript
复制
file = File.read('/home/nav/Desktop/Scraping/scrap1.html')
doc = Nokogiri::HTML(file)
票数 5
EN

Stack Overflow用户

发布于 2014-09-14 11:14:04

在浏览器中打开本地文件时,地址栏中的URL显示为:

代码语言:javascript
复制
file:///Users/7stud/Desktop/accounts.txt

但这并不意味着您可以在Ruby脚本中使用这种格式。Ruby脚本不会将文件名发送到浏览器,然后再请求浏览器检索该文件。Ruby脚本直接搜索文件系统。

URL也是如此: Ruby脚本不会要求浏览器从互联网上检索页面,Ruby通过使用系统的网络接口发送请求来检索页面本身。毕竟,浏览器和Ruby程序都只是计算机程序。你的浏览器可以在网络上做什么,Ruby程序也可以做什么。

这对我来说很有效:

代码语言:javascript
复制
require 'open-uri'

text = open('./data.txt').read
puts text

不过,你必须正确地走自己的路。我能想到使用open()的唯一原因是如果你有一个文件名和URL混合在一起的数组。如果这不是您的情况,请参阅new2code的答案。

票数 3
EN

Stack Overflow用户

发布于 2014-09-14 03:41:19

这就是我根据文档所做的事情。

代码语言:javascript
复制
    f = File.open("//home/nav/Desktop/Scraping/scrap1.html")
    doc = Nokogiri::HTML(f)
    f.close
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25826795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档