如何使用Mechanize / Nokogiri获取页面源

时间:2011-06-26 22:20:08

标签: ruby nokogiri mechanize

我使用Mechanize登录了一个网页/ servlet。

我有一个页面对象

jobShortListPg = agent.get(addressOfPage)

当我使用以下

puts jobShortListPg

我得到了我不想要的页面的“机械化”版本。

#<Mechanize::Page::Link "Home" "blahICScriptProgramName=WEBLIB_MENU.ISCRIPT3.FieldFormula.IScript_DrillDown&target=main0&Level=0&RL=&navc=3171">

如何获取页面的html源代码?

3 个答案:

答案 0 :(得分:34)

使用.body

puts jobShortListPg.body

答案 1 :(得分:1)

使用页面对象的content方法。

jobShortListPg.content

答案 2 :(得分:0)

在Nokogiri中,在主文档节点上使用to_sto_html

require 'nokogiri'

doc = Nokogiri::HTML(<<EOT)
<html>
  <head></head>
  <body>foo</body>
</html>
EOT

doc.to_html
# => "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n" +
#    "<html>\n" +
#    "  <head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"></head>\n" +
#    "  <body>foo</body>\n" +
#    "</html>\n"

或:

doc.to_s
# => "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n" +
#    "<html>\n" +
#    "  <head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"></head>\n" +
#    "  <body>foo</body>\n" +
#    "</html>\n"

如果分散您的注意力以查看嵌入的换行符,则可能会有所帮助:

puts doc.to_s

# >> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
# >> <html>
# >>   <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>
# >>   <body>foo</body>
# >> </html>