1

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

<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

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

4

1 回答 1

0

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

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

有关详细信息,请参阅“如何使用 Mechanize 处理 JavaScript? ”。

于 2013-01-24T23:53:56.357 回答