いくつかのデータを取得するページにアクセスするには、リンクのテキストではなく、divクラスを介していくつかの要素をクリックするのに助けが必要です。
- http://www.salatomatic.com/b/United-States+125のページから始めて、リンクのテキストを使用せずにdivクラスで各州の名前をクリックするにはどうすればよいですか?
- http://www.salatomatic.com/b/Alabama+7などの州をクリックした後、リンクのテキストではなく、再びdivクラスで州内の地域をクリックする必要があります。
- 地域内、www [dot] salatomatic [dot] com / c / Birmingham + 12、各アイテム(この例では11のモスク)をクリックしてループします。
- アイテム/モスク内で、アドレス(モスクのタイトルの下の上部)をスクレイプして、データベースに保存/作成する必要があります。
更新:
私は今これを持っています:
require 'nokogiri'
require 'open-uri'
require 'mechanize'
agent = Mechanize.new
page = agent.get("http://www.salatomatic.com/b/United-States+125")
#loops through all state links
page.search('.subtitleLink a').map{|a| page.uri.merge a[:href]}.each do |uri|
page2 = agent.get uri
#loops through all regions in each state
page2.search('.subtitleLink a').map{|a| page2.uri.merge a[:href]}.each do |uri|
page3 = agent.get uri
#loops through all places in each region
page3.search('.subtitleLink a').map{|a| page3.uri.merge a[:href]}.each do |uri|
page4 = agent.get uri
#I'm able to grab the title of the place but not sure how to get the address b/c there is no div around it.
puts page4.at('.titleBM')
#I'm guessing I would use some regex/xpath here to get the address, but how would that work?
#This is the structure of the title/address in HTML:
<td width="100%"><div class="titleBM">BIS Hoover Crescent Islamic Center </div>2524 Hackberry Lane, Hoover, AL 35226</td> This is the listing page: http://www.salatomatic.com/d/Hoover+12446+BIS-Hoover-Crescent-Islamic-Center
end
end
end