我试图看看如何从此屏幕获取信息以便加入,以便最终可以将其放入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
答案 0 :(得分:0)
我会使用div
=〜id
和/或group_
class
来迭代group
。
然后在每个div
内提取地址和家庭成员。
答案 1 :(得分:0)
这将以更实用的格式为您提供数据。它围绕包含<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
数组数组,并为每个子数组存储地址,然后存储相关名称。
如果您想对电话号码做些什么,您必须弄清楚如何使用正则表达式捕获它们,但这是一个单独的问题。