[JAVA] Méthode Execute_script utile pour le web scraping par Selenium

introduction

Voici un résumé de la méthode execute_script qui est utile lors du scraping Web avec Selenium. execute_script exécute l'opération décrite en JavaScript sur la page Web.

table des matières

  1. find_element si execute_script n'est pas utilisé
  2. execute_script
  3. Faites-en une méthode et rendez-la plus facile à utiliser
  4. Résumé

1. Si execute_script n'est pas utilisé, find_element, find_elements

Lors du scraping Web avec Selenium, le traitement de la page est généralement effectué en spécifiant des éléments avec les méthodes find_element et find_elements et en exécutant la méthode click.

Lors de l'utilisation de find_element et find_elements
#Cliquez sur l'action(Exemple: soumettre_Une classe appelée btn,"Envoyer"Élément d'entrée avec valeur)
@driver.find_element(:class,'submit_btn').click #Spécifié par classe
@driver.find_element(:css,"input[value='Envoyer']").click #Spécifié par CSS

#Entrez une valeur
@driver.find_element(:name,'favorite_food').send_keys('ramen')

#Découvrez le nombre d'éléments
@driver.find_elements(:class, '.btn').size #Vérifiez le nombre de boutons.
  1. execute_script

Le ou les éléments de recherche ci-dessus sont un peu ennuyeux car vous devez exécuter ruby à chaque fois pour vous assurer que vous avez correctement spécifié l'élément. Alors, implémentons la même opération avec execute_script comme suit.

Lors de l'utilisation de execute_script
#Cliquez sur l'action
@driver.execute_script(%{document.querySelector('.submit_btn').click();}) #Spécifié par classe
@driver.execute_script(%{document.querySelector("input[value='Envoyer']").click();}) #Spécifié par CSS

#Entrez une valeur
@driver.execute_script(%{document.querySelector("[name='favorite_food']").value = 'ramen';})

#Découvrez le nombre d'éléments
@driver.execute_script(%{return document.querySelectorAll('.btn').length;}) #Vérifiez le nombre de boutons

Écrivez le code JavaScript que vous souhaitez exécuter directement dans l'argument de execute_script. En faisant cela, vous pouvez développer tout en exécutant Javascript dans un navigateur Web. Dans le cas de chrome, vous pouvez l'exécuter en tapant simplement JavaScript dans l'onglet Console des outils de développement. Cela réduit considérablement le nombre d'allers-retours entre les éditeurs et les terminaux, permettant un développement efficace.

3. Faites-en une méthode et rendez-la plus facile à utiliser

Il est également souhaitable de refactoriser avec le partitionnement de méthode pour réduire la redondance et la lisibilité. Dans ce cas, transmettez le sélecteur css et la valeur que vous souhaitez envoyer comme arguments.

Lorsqu'une méthode est définie pour le traitement par JavaScript

#Cliquez sur la méthode d'action
def query_click(css_selector)
  @driver.execute_script(%{document.querySelector("#{css_selector}").click();})
end

#Méthode pour saisir une valeur
def value_input(css_selector,value)
  @driver.execute_script(%{document.querySelector("#{css_selector}").value = "#{value}";})
end

#Méthode pour vérifier le nombre d'éléments
def query_count(css_selector)
  @driver.execute_script(%{return document.querySelectorAll("#{css_selector}").length;})
end

query_click('.submit_btn')         #Spécifiez par classe et cliquez sur
query_click("input[value='Envoyer']") #Spécifiez avec css et cliquez sur

value_input("[name='favorite-food']",'ramen') #Entrez une valeur

query_count('.btn') #Découvrez le nombre de boutons

4. Résumé

J'ai résumé comment faire exécuter JavaScript par Selenium par execute_script. Étant donné que JavaScript ne peut pas traiter les pages, il peut être préférable d'utiliser find_element lorsque vous souhaitez effectuer un traitement répété en effectuant une transition de pages. Si vous pouvez utiliser les deux, je pense que le web scraping s'améliorera. Veuillez en profiter.

Recommended Posts

Méthode Execute_script utile pour le web scraping par Selenium
Obtenez le nom d'anime de ce terme en grattant