使用nokogiri或mechanize来解析使用JavaScript呈现的电子邮件

时间:2013-01-24 22:17:22

标签: ruby ruby-on-rails-3 html-parsing nokogiri mechanize

我想解析以这种方式呈现的电子邮件地址:

<p class="email">
"Email: "
<script type="text/javascript"><!--
 document.write('f'+'o'+'<wbr/>@'+'e'+'x'+'p'+'.'+'c'+'o'); //-->
</script>
</p>

我正在使用此代码:

task import_emails: :environment do
  require 'mechanize'
  agent = Mechanize.new
  agent.get("URL")
  agent.page.search(".email").each do |email|
    puts email.text.strip
  end
end

它只返回“电子邮件:”。

1 个答案:

答案 0 :(得分:0)

Nokogiri / Mechanize不处理JavaScript,因此您使用document.write添加的电子邮件文本对他们不可见,这就是您只能获得Email:的原因。

如果要选择使用JavaScript呈现的元素或文本,则必须考虑实际驱动浏览器的工具,以便使用JavaScript呈现页面。一个例子是Watir。另外,请查看CapybaraCapybara webkit

有关详细信息,请参阅“How do I use Mechanize to process JavaScript?”。