如何使用Nokogiri在Ruby on Rails中提取HTML文档中的电子邮件链接?

更新于
2026-10-09 21:54:08
2阅读来源:SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计565个文字,预计阅读时间需要3分钟。

如何使用Nokogiri在Ruby on Rails中提取HTML文档中的电子邮件链接?

在Nokogiri的HTML代码中找到电子邮件地址,可以使用正则表达式匹配包含特定字符集的模式。以下是一个简单的例子:

如何使用Nokogiri在Ruby on Rails中提取HTML文档中的电子邮件链接?

rubyrequire 'nokogiri'require 'open-uri'

加载HTML内容_content=open('example.').read

使用Nokogiri解析HTMLdoc=Nokogiri::HTML(_content)

定义正则表达式来匹配电子邮件地址email_regex=/[\w\.-]+@[\w\.-]+/

查找所有的电子邮件地址emails=doc.xpath('//text()').map { |text| text.scan(email_regex) }.flatten

输出找到的电子邮件地址puts emails

在这个例子中,`example.`是包含HTML代码的文件。我们使用`open-uri`库来读取HTML文件的内容,然后用Nokogiri解析这个HTML内容。正则表达式`[\w\.-]+@[\w\.-]+`用于匹配大多数电子邮件地址格式。

注意:上述代码示例中使用了`//text()`来获取所有文本节点,这可能不是找到电子邮件地址的最佳方法,因为电子邮件地址可能被包含在其他HTML元素中。如果需要更精确的搜索,可能需要修改XPath表达式。

如何在Nokogiri的 HTML代码中找到电子邮件地址?
我想我需要使用正则表达式,但不知道如何.

示例代码

<html> <title>Example</title> <body> This is an example text. example@example.com </body> </html>

当有一个关于mail_to的href时,有一个答案覆盖案例,但这不是我的情况.电子邮件地址有时位于链接中,但并非总是如此.

谢谢

如果你只是试图从一个恰好是HTML的字符串中解析电子邮件地址,那么就不需要Nokogiri.

html_string = "Your HTML here..." email_address = html_string.match(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i)[0]

这不是一个完美的解决方案,因为构成“有效”电子邮件地址的RFC非常宽松.这意味着您遇到的大多数正则表达式(包括上面的表达式)都不考虑边缘情况有效地址.例如,根据RFC

$A12345@example.com

是一个有效的电子邮件地址,但不会与上面的正则表达式匹配.

>推荐阅读:haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx
>正则表达式来源:www.dzone.com/snippets/ruby-method-extract-emails

本文共计565个文字,预计阅读时间需要3分钟。

如何使用Nokogiri在Ruby on Rails中提取HTML文档中的电子邮件链接?

在Nokogiri的HTML代码中找到电子邮件地址,可以使用正则表达式匹配包含特定字符集的模式。以下是一个简单的例子:

如何使用Nokogiri在Ruby on Rails中提取HTML文档中的电子邮件链接?

rubyrequire 'nokogiri'require 'open-uri'

加载HTML内容_content=open('example.').read

使用Nokogiri解析HTMLdoc=Nokogiri::HTML(_content)

定义正则表达式来匹配电子邮件地址email_regex=/[\w\.-]+@[\w\.-]+/

查找所有的电子邮件地址emails=doc.xpath('//text()').map { |text| text.scan(email_regex) }.flatten

输出找到的电子邮件地址puts emails

在这个例子中,`example.`是包含HTML代码的文件。我们使用`open-uri`库来读取HTML文件的内容,然后用Nokogiri解析这个HTML内容。正则表达式`[\w\.-]+@[\w\.-]+`用于匹配大多数电子邮件地址格式。

注意:上述代码示例中使用了`//text()`来获取所有文本节点,这可能不是找到电子邮件地址的最佳方法,因为电子邮件地址可能被包含在其他HTML元素中。如果需要更精确的搜索,可能需要修改XPath表达式。

如何在Nokogiri的 HTML代码中找到电子邮件地址?
我想我需要使用正则表达式,但不知道如何.

示例代码

<html> <title>Example</title> <body> This is an example text. example@example.com </body> </html>

当有一个关于mail_to的href时,有一个答案覆盖案例,但这不是我的情况.电子邮件地址有时位于链接中,但并非总是如此.

谢谢

如果你只是试图从一个恰好是HTML的字符串中解析电子邮件地址,那么就不需要Nokogiri.

html_string = "Your HTML here..." email_address = html_string.match(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i)[0]

这不是一个完美的解决方案,因为构成“有效”电子邮件地址的RFC非常宽松.这意味着您遇到的大多数正则表达式(包括上面的表达式)都不考虑边缘情况有效地址.例如,根据RFC

$A12345@example.com

是一个有效的电子邮件地址,但不会与上面的正则表达式匹配.

>推荐阅读:haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx
>正则表达式来源:www.dzone.com/snippets/ruby-method-extract-emails