首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Mechanize读取本地HTML文件

使用Mechanize读取本地HTML文件
EN

Stack Overflow用户
提问于 2011-09-29 00:43:18
回答 4查看 6.9K关注 0票数 10

我正在构建一个爬虫,我知道如何使用ruby机械化从网络中读取页面,使用以下代码:

代码语言:javascript
复制
require 'mechanize'
agent = Mechanize.new
agent.get "http://google.com"

但是我可以使用Mechanize从文件系统中读取HTML文件吗?多么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-29 00:49:15

在这种情况下,尝试使用机械化是没有意义的。也许你想解析一下HTML。然后尝试nokogiri (mechanize也将其用于解析)

例如,使用

代码语言:javascript
复制
Nokogiri::HTML(open('index.html'))

而不是

代码语言:javascript
复制
session.get('http://www.google.com')
票数 -8
EN

Stack Overflow用户

发布于 2012-07-07 00:29:42

只需使用file://协议就可以了:

代码语言:javascript
复制
html_dir = File.dirname(__FILE__)
page = agent.get("file:///#{html_dir}/example-file.html")

关于为什么有人会使用mechanize来读取本地html文件的问题:出于测试目的,我发现这是必要的--只需在本地存储一个示例文件并对其运行rspec即可。

票数 39
EN

Stack Overflow用户

发布于 2013-05-03 01:40:13

我无法让file://协议为我正确工作。相反,我通过在本地保存网页并注册URI来使用Fakeweb

代码语言:javascript
复制
stream = File.read("saved_google_page.html")
FakeWeb.register_uri(:get, "http://www.google.com", :body => stream, :content_type => "text/html")

让Fakeweb通过正常的机械化过程在幕后返回它

代码语言:javascript
复制
agent = Mechanize.New
page = agent.get("http://www.google.com/")

请参阅How to test a ruby application which uses mechanize

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7586627

复制
相关文章

相似问题

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