我想解析以这种方式呈现的电子邮件地址:
<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
它只返回"电子邮件:"。
Nokogiri/Mechanize 不处理 JavaScript,因此您document.write
添加的电子邮件文本对他们来说是不可见的,这就是为什么您只能收到Email:
。
如果要选择使用 JavaScript 呈现的元素或文本,则必须考虑实际驱动浏览器的工具,以便使用 JavaScript 呈现页面。一个例子是瓦蒂尔。另外,看看水豚和水豚网络套件。
有关更多详细信息,请参阅"如何使用 Mechanize 处理 JavaScript?"。