4 votes

Sélénium : Obtenir des données variables à partir de la balise <script type> en Python

Je m'essaie donc à l'utilisation de Selenium pour extraire des données d'un site Web, mais comme je suis encore novice en matière de Selenium et d'extraction de données Web, je suis bloqué. Je veux récupérer des données qui sont présentes sous <script type> la balise ressemble à ceci :

...
...

<script type="text/javascript">
  var myData_1 = {"name" : ..... };
  var myData_2 = {......};
  var myData_id = 4565843;
  var myData_mapping = {.....};
</script>

...
...

J'ai donc besoin de scraper les données présentes dans ce tag script c'est-à-dire toutes les valeurs des données var. Jusqu'à présent, je n'ai codé que cela :

from selenium import webdriver
import pandas as pd

driver = webdriver.Chrome('/home/slothfulwave612/chromedriver_linux64/chromedriver')

driver.get('https://www.example.com') ## not the actual site

html = driver.page_source

print(html)

driver.close()

Il s'agit juste d'imprimer le code source du site web, que dois-je ajouter ici pour pouvoir récupérer les données à partir du site web. <script type étiquette. Quelqu'un peut aider ?

3voto

asantz96 Points 519

Utilisez la méthode .find_element_by_xpath() ( docs )

script_label = driver.find_element_by_xpath("//script[@type = 'text/javascript']")

Et ensuite vous pouvez gratter les éléments intérieurs.

0voto

rahul rai Points 2035

Si vous voulez imprimer tout le contenu de la balise script utilisez innerHTML à imprimer.

ele = driver.find_element_by_xpath("//script[@type = 'text/javascript']")
print(ele.get_attribute("innerHTML"))

Sortie :

var myData_1 = {"name" : ..... } ;

var myData_2 = {......} ;

var myData_id = 4565843 ;

var myData_mapping = {.....} ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X