如何使用Nokogiri从HTML代码中获取邮件地址



如何使用Nokogiri从HTML代码中获取邮件地址?我在考虑regex,但我不知道它是否是最好的解决方案。

示例代码:

<html>
<title>Example</title>
<body>
This is an example text.
<a href="mailto:example@example.com">Mail to me</a>
</body>
</html>

如果邮件地址不在某些标签之间,Nokogiri中是否存在获取邮件地址的方法?

您可以使用xpath提取电子邮件地址。

选择器//a将选择页面上的任何a标记,您可以使用@语法指定href属性,因此//a/@href将为您提供页面上所有a标记的href

如果页面上混合了可能具有不同URL类型的a标记(例如http:// URL),则可以使用xpath函数进一步缩小所选节点的范围。选择器

//a[starts-with(@href, "mailto:")]/@href

将为您提供具有以"mailto:"开头的href属性的所有a标记的href节点。

把所有这些放在一起,并添加一点额外的代码,从属性值的开头去掉"mailto:"

require 'nokogiri'
selector = "//a[starts-with(@href, "mailto:")]/@href"
doc = Nokogiri::HTML.parse File.read 'my_file.html'
nodes = doc.xpath selector
addresses = nodes.collect {|n| n.value[7..-1]}
puts addresses

有一个看起来像这样的测试文件:

<html>
<title>Example</title>
<body>
This is an example text.
<a href="mailto:example@example.com">Mail to me</a>
<a href="http://example.com">A Web link</a>
<a>An empty anchor.</a>
</body>
</html>

该代码输出期望的CCD_ 12。addresses是文档中mailto链接中所有电子邮件地址的数组。

在此之前,我会说我对野村一无所知。但我只是去了他们的网站,看了一下文档,它看起来很酷。

如果你在电子邮件链接中添加了一个email_field类(或者你想怎么称呼它),你可以修改它们的示例代码来完成你想要的任务。

require 'nokogiri'
require 'open-uri'
# Get a Nokogiri::HTML:Document for the page we’re interested in...
doc = Nokogiri::HTML(open('http://www.yoursite.com/your_page.html'))
# Do funky things with it using Nokogiri::XML::Node methods...
####
# Search for nodes by css
doc.css('.email_field').each do |email|
#  assuming you have than one, do something with all your email fields here
end

如果我是你,我只会看看他们的文档,并用他们的一些例子进行实验。

网站如下:http://nokogiri.org/

CSS选择器现在(最终)可以在参数的开头找到文本:

require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<a href="http:example.com">blah</a>
<a href="mailto:foo@bar.com">blah</a>
EOT
doc.at('a[href^="mailto:"]')
  .to_html # => "<a href="mailto:foo@bar.com">blah</a>"

Nokogiri试图跟踪jQuery扩展。我曾经有一个链接,链接到一个维护人员关于它的更改通知或消息,但我的里程数有所不同。

有关详细信息,请参阅"CSS属性选择器"。

尝试获取整个html页面并使用正则表达式。

相关内容

  • 没有找到相关文章