以前は解析に mechanize を使用していましたが、現在は JavaScript を使用する Web サイトを解析していますが、mechanize はそれをサポートしていないため、セレンを使用しました。このウェブサイトから企業に関する情報を取得する必要がありますが、javascript リンクをクリックして初めて情報を取得できます。私はセレンでそれを行いました.私のパーサーはjavascriptをクリックし、情報を収集し、ここで問題が発生します. ご存じのように、収集した情報をデータベースに保存する必要があります。情報が変数 (例: address=..、phone=..、email=.. など) に保存される場合にのみ、これを適切に行うことができます。私は SelectorGadget で必要な情報を選択し、selenium は情報を収集します (driver.find_element(:css, ..)
が、すべての企業に関する情報は単一のセレクター (.p2 div
)そして、場所を単一の変数として保存できず、電話を他の変数などとして保存できません。私の質問-このテキストを分割して変数に保存することは可能ですか?
プロセスを説明する写真:
i.imgur.com/J5dcGZD.png
i.imgur.com/MaBWICZ.png
i.imgur.com/ZDNXhLt.png
html の一部を含む写真: http://i.imgur.com/NUa1X97.png
このサイトのサンプルページです。サイトはロシア語なので、Google翻訳者で翻訳してください
パーサー自体 (各会社からの一連のテキストを連絡先変数に保存します):
require 'rubygems'
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :firefox
driver.get "http://www.ypag.ru/cat/komp249/page3880.html"
loop do
driver.find_elements(:css, ".p2 div a").each {|link| link.click}
driver.find_elements(:css, ".p3 a, .firm , .p2 div").each {
|n,r,c|
name = n
region = r
contacts = c
print name.text.center(100)
puts region
puts contacts
}
link = driver.find_element(:xpath, "/html/body/table[5]/tbody/tr/td/a[2]" )[:href]
break if link == "http://www.ypag.ru/cat/komp249/page3780.html"
driver.get "#{link}"
end