[JAVA] Execute_script-Methode, die für das Web-Scraping von Selenium nützlich ist

Einführung

Hier ist eine Zusammenfassung der Methode execute_script, die beim Web-Scraping mit Selen nützlich ist. execute_script führt die in JavaScript auf der Webseite beschriebene Operation aus.

Inhaltsverzeichnis

  1. find_element, wenn execute_script nicht verwendet wird
  2. execute_script
  3. Machen Sie es zu einer Methode und vereinfachen Sie die Verwendung
  4. Zusammenfassung

1. Wenn execute_script nicht verwendet wird, find_element, find_elements

Beim Web-Scraping mit Selen wird die Seitenverarbeitung normalerweise durchgeführt, indem Elemente mit den Methoden find_element und find_elements angegeben und die click-Methode ausgeführt werden.

Bei Verwendung von find_element und find_elements
#Klicken Sie auf Aktion(Beispiel: einreichen_Eine Klasse namens btn,"Senden"Eingabeelement mit Wert)
@driver.find_element(:class,'submit_btn').click #Von Klasse angegeben
@driver.find_element(:css,"input[value='Senden']").click #Spezifiziert durch CSS

#Wert eingeben
@driver.find_element(:name,'favorite_food').send_keys('ramen')

#Finden Sie die Anzahl der Elemente heraus
@driver.find_elements(:class, '.btn').size #Überprüfen Sie die Anzahl der Tasten.
  1. execute_script

Die find_element (s) oben sind etwas nervig, da Sie jedes Mal Ruby ausführen müssen, um sicherzustellen, dass Sie das Element korrekt angegeben haben. Implementieren wir also dieselbe Operation mit execute_script wie folgt.

Bei Verwendung von execute_script
#Klicken Sie auf Aktion
@driver.execute_script(%{document.querySelector('.submit_btn').click();}) #Von Klasse angegeben
@driver.execute_script(%{document.querySelector("input[value='Senden']").click();}) #Spezifiziert durch CSS

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

#Finden Sie die Anzahl der Elemente heraus
@driver.execute_script(%{return document.querySelectorAll('.btn').length;}) #Überprüfen Sie die Anzahl der Tasten

Schreiben Sie den JavaScript-Code, den Sie ausführen möchten, direkt in das Argument execute_script. Auf diese Weise können Sie während der Ausführung von Javascript in einem Webbrowser entwickeln. Im Fall von Chrome können Sie es ausführen, indem Sie einfach JavaScript auf der Registerkarte Konsole der Entwicklertools eingeben. Dies reduziert die Anzahl der Hin- und Rückfahrten zwischen Redakteuren und Terminals drastisch und ermöglicht eine effiziente Entwicklung.

3. Machen Sie es zu einer Methode und vereinfachen Sie die Verwendung

Es ist auch wünschenswert, die Methodenpartitionierung umzugestalten, um Redundanz und Lesbarkeit zu verringern. Übergeben Sie in diesem Fall den CSS-Selektor und den Wert, den Sie senden möchten, als Argumente.

Wenn eine Methode für die Verarbeitung durch JavaScript definiert ist

#Klicken Sie auf Aktionsmethode
def query_click(css_selector)
  @driver.execute_script(%{document.querySelector("#{css_selector}").click();})
end

#Methode zur Eingabe eines Wertes
def value_input(css_selector,value)
  @driver.execute_script(%{document.querySelector("#{css_selector}").value = "#{value}";})
end

#Methode zum Überprüfen der Anzahl der Elemente
def query_count(css_selector)
  @driver.execute_script(%{return document.querySelectorAll("#{css_selector}").length;})
end

query_click('.submit_btn')         #Nach Klasse angeben und klicken
query_click("input[value='Senden']") #Mit CSS angeben und klicken

value_input("[name='favorite-food']",'ramen') #Wert eingeben

query_count('.btn') #Finden Sie die Anzahl der Schaltflächen heraus

4. Zusammenfassung

Ich habe zusammengefasst, wie Selenium JavaScript mit execute_script ausführen kann. Da JavaScript nicht seitenübergreifend verarbeitet werden kann, ist es möglicherweise besser, find_element zu verwenden, wenn Sie eine wiederholte Verarbeitung durch Übergang von Seiten durchführen möchten. Wenn Sie beide verwenden können, wird sich das Web-Scraping meiner Meinung nach verbessern. Bitte nutzen Sie es.

Recommended Posts

Execute_script-Methode, die für das Web-Scraping von Selenium nützlich ist
Holen Sie sich den Anime-Namen für diesen Begriff durch Scraping