下载整个HTML页面?

下载整个HTML页面?,html,ruby,nokogiri,Html,Ruby,Nokogiri,我正试图写一个screenscraper,我想下载一个网站的主页 当我在浏览器上查看页面的源代码时,我没有看到完整的HTML代码。在浏览器中查看源代码时,如何确保加载所看到的所有内容 # Required Gems require 'rubygems' # Loads gems require "nokogiri" # Nokogiri require "open-uri" # For Nokogiri require "chronic" # For time parsing require "

我正试图写一个screenscraper,我想下载一个网站的主页

当我在浏览器上查看页面的源代码时,我没有看到完整的HTML代码。在浏览器中查看源代码时,如何确保加载所看到的所有内容

# Required Gems
require 'rubygems' # Loads gems
require "nokogiri" # Nokogiri
require "open-uri" # For Nokogiri
require "chronic" # For time parsing
require "cgi" # For parsing urls
require 'net/http' # For image downloading


URL = URI.parse("http://www.gocrimson.com/landing/index")

hBOList = Nokogiri::HTML(open(URL)) 
是否:

需要“打开uri”

open(“page|test.txt”,“w”){| f | f浏览器的源视图不一定与请求的HTML文件本身相匹配,因为在加载原始请求的页面之后,使用Ajax加载页面块

如果页面使用JavaScript和Ajax,则无法使用常规方法检索其源代码,除非您解码整个内容加载链并在Ruby代码中重新创建它们


或者,您可以使用Ruby可以与之对话的浏览器,告诉它加载初始页面,然后触发浏览器中的JavaScript操作,浏览器将加载附加内容,然后您的代码可以提取它并执行您想要的操作。为此,您应该查看它或它的一个派生版本。

我认为一些内容是通过ajax在某些按钮上单击或在某些操作后调用。如果您知道您想要的东西以及要执行的操作,那么您可以看到。Mechanize内部使用Nokogiri,它有助于加载需要执行某些操作的页面。

Hisako和redcup您应该按照锡人的建议尝试watir。例如:

require 'rubygems'
require 'watir-webdriver'

browser = Watir::Browser.new
browser.goto "http://www.gocrimson.com/landing/index"

puts browser.html

应该做你想做的事。

不,它没有。看起来这个页面有很多内容都加载了javascript。有没有办法解决这个问题?这个问题的答案对我来说也很有趣;)(可能是一些模仿gem的brwoser?)Nokogiri不会“把东西丢到某个地方”。如果文档格式不正确,它可能不喜欢文档,并且会进行一些修复,但是可以使用
errors
方法进行检查。
File.open(“page_test.txt”,“w”){f | f这不是Nokogiri的问题。下载页面发生在Nokogiri看到内容之前。
require 'rubygems'
require 'watir-webdriver'

browser = Watir::Browser.new
browser.goto "http://www.gocrimson.com/landing/index"

puts browser.html