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

标签 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

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

最佳答案

Nokogiri/Mechanize 不处理 JavaScript,因此您添加的电子邮件文本 document.write他们看不到,这就是为什么你只能得到 Email:背部。

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

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

关于ruby - 使用 nokogiri 或 mechanize 解析使用 JavaScript 呈现的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14511835/

相关文章:

ruby-on-rails - rails : Query ActiveRecord by month and year

ruby - 在定义类方法时规避 Ruby 的作用域门

ruby-on-rails - rails 复位单柱

ruby-on-rails - Rails后台进程/数据结构

java - 解析 HTML : Getting particular html definition list after a particular paragraph using JSOUP

正则表达式从 <body>...</body> 中提取代码?

javascript - 通过 reactjs 转换为 javascript 时丢失与 activerecord 模型的关系

ruby - 在 Ruby 散列中使用 fixnums 作为键好吗?

forms - rails 3 form_for不输出任何内容

r - 使用 R 进行网页抓取,内容