我想解析以这种方式呈现的电子邮件地址:
<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
它只返回“电子邮件:”。
答案 0 :(得分:0)
Nokogiri / Mechanize不处理JavaScript,因此您使用document.write
添加的电子邮件文本对他们不可见,这就是您只能获得Email:
的原因。
如果要选择使用JavaScript呈现的元素或文本,则必须考虑实际驱动浏览器的工具,以便使用JavaScript呈现页面。一个例子是Watir。另外,请查看Capybara和Capybara webkit。
有关详细信息,请参阅“How do I use Mechanize to process JavaScript?”。