ruby on rails-如何将这些元素连接到Nokogiri HTML刮片中



我正在尝试如何从这个屏幕抓取中获取信息以进行连接,以便最终将其放入rails中的cvs或数据库文件中。这只是一个例子,但来自我选择测试的网站的真实数据。我测试了css调用以确保它们是有效的。提前感谢您的帮助。

代码如下:

require 'rubygems'
require 'nokogiri'
require 'open-uri'
url = "http://neighbors.whitepages.com/search/neighbor_search/7707-Gralnick-Pl/Springfield,-VA"
doc = Nokogiri::HTML(open(url))
puts doc.at_css("title").text
doc.css(".header").each do |header|
  address = header.css(".address").text
  puts "#{address}"
end
doc.css(".household_members").each do |household_members|  
  names = household_members.css(".basic_info").text
  puts "#{names}" 
end

这将以更可用的格式获得数据。它围绕包含<div class="single">的外部循环,从而可以更容易地对地址和人员进行分组:

require 'nokogiri'
require 'open-uri'
url = "http://neighbors.whitepages.com/search/neighbor_search/7707-Gralnick-Pl/Springfield,-VA"
doc = Nokogiri::HTML(open(url))
data = doc.search('div.single').map{ |div|
  [
    div.at('.address').text,
    div.search('.household_members > .basic_info').map{ |n| n.text.strip }
  ]
}

data[0, 5]:

[
  ["7705 Gralnick Pl", ["Debra A Mussmon"]],
  ["7709 Gralnick Pl", ["Mary D Apker", "John E Apker"]],
  ["7202 Caulking Pl", ["Vivianjune S Furber"]],
  ["9246 Northedge Dr", ["Bridget Cox (703) 455-6057", "Joseph R Furber (703) 455-2442", "Vivian J Furber (703) 455-2442"]],
  ["9244 Northedge Dr", ["David B Burlingame (703) 455-5708", "Linda J Burlingame (703) 455-5708", "Colby Burlingame (703) 455-5708"]]
]

如果没有任何关于数据库模式的提示,就不可能为编写数据库提供任何帮助,但至少这为您提供了一个起点。在数组的data数组上迭代,并为每个子数组存储地址,然后存储关联的名称。

如果你想对电话号码做点什么,你必须想办法用正则表达式来捕捉它们,但这是一个单独的问题。

我会用id=~group_和/或classgroup迭代divs。

然后在每个div中提取地址和家庭成员。

相关内容

  • 没有找到相关文章

最新更新