2016-04-11 1 views
0

Je cherche à gratter le contenu d'une page qui vous oblige à appuyer sur un bouton fléché dans lequel, l'information apparaîtra via jquery plutôt que de charger une nouvelle page. Comme il faut cliquer sur un bouton, j'utilise mécaniser pour cette partie au lieu de nokogiri. Ce que j'ai jusqu'à présent estComment puis-je utiliser mécaniser pour cliquer sur le bouton pour créer une page web pour obtenir des informations?

url = "http://brokercheck.finra.org/Individual/Summary/1327992" 
mechanize = Mechanize.new 
page = mechanize.get(url) 
button = page.at('.ArrowExpandDsclsr.faangledown') 
new_page = mechanize.click(button) 
new_page.at('#disclosuredetails') 

Il semble que new_page n'affiche toujours pas la page avec les informations nouvellement chargées. Quelqu'un sait pourquoi c'est?

+2

Mécaniser ne traite pas Javascript. Jetez un oeil sur les réponses pour http://stackoverflow.com/questions/802225/how-do-i-use-mechanize-to-process-javascript – eugen

Répondre

0

Le bouton que vous essayez de faire mécaniser n'est pas un bouton "normal", c'est un peu plus dynamique. Il utilise javascript/ajax pour récupérer les données pertinentes lorsque vous cliquez dessus.

Mechanize ne rend pas le DOM d'une page Web ni ne permet d'avoir un javascript interagissant avec la page. Ainsi, il ne convient pas d'interagir avec des pages dynamiques en fonction de javascript pour leur fonctionnalité.

Pour de tels cas, je suggérerais phantomjs, soit autonome ou par l'intermédiaire de capybara/poltergeist si vous préférez interagir avec elle via ruby.