我正在尝试使用单个文件 Ruby 脚本来抓取给定站点上的所有电子邮件地址。在文件的底部,我有一个硬编码的测试用例,它使用了一个 URL,该 URL 在该特定页面上列出了一个电子邮件地址(因此它应该在第一个循环的第一次迭代中找到一个电子邮件地址。
出于某种原因,我的正则表达式似乎不匹配:
#get_emails.rb
require 'rubygems'
require 'open-uri'
require 'nokogiri'
require 'mechanize'
require 'uri'
require 'anemone'
class GetEmails
def initialize
@urlCounter, @anemoneCounter = 0
$allUrls, $emailUrls, $emails = []
end
def has_email?(listingUrl)
hasListing = false
Anemone.crawl(listingUrl) do |anemone|
anemone.on_every_page do |page|
body_text = page.body.to_s
matchOrNil = body_text.match(/\A[^@\s]+@[^@\s]+\z/)
if matchOrNil != nil
$emailUrls[$anemoneCounter] = listingUrl
$emails[$anemoneCounter] = body_text.match
$anemoneCounter += 1
hasListing = true
else
end
end
end
return hasListing
end
end
emailGrab = GetEmails.new()
emailGrab.has_email?("http://genuinestoragesheds.com/contact/")
puts $emails[0]