使用Mechanize读取本地HTML文件

c2h*_*2h2 10 ruby mechanize

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

require 'mechanize'
agent = Mechanize.new
agent.get "http://google.com"
Run Code Online (Sandbox Code Playgroud)

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

ben*_*nto 37

只使用file://协议对我很有用:

html_dir = File.dirname(__FILE__)
page = agent.get("file:///#{html_dir}/example-file.html")
Run Code Online (Sandbox Code Playgroud)

关于为什么有人会使用mechanize来读取本地html文件的问题:我发现它有必要用于测试目的 - 只需在本地存储一个示例文件并运行你的rspec.

  • 使用`File.dirname(__ FILE __)`给了我404错误.但对我来说有用的是:`page = agent.get("file:///#{Dir.pwd}/example-file. HTML")` (4认同)

luc*_*tte -8

恕我直言,在这种情况下尝试使用机械化是没有意义的。也许您想解析 HTML。然后尝试nokogiri(mechanize 也用它来解析)

例如使用

Nokogiri::HTML(open('index.html'))
Run Code Online (Sandbox Code Playgroud)

代替

session.get('http://www.google.com')
Run Code Online (Sandbox Code Playgroud)