Nous intégrons parfois des balises pour collecter des données spécifiques dans le HTML des pages Web, et nous avons utilisé des tests automatisés pour tester si les balises intégrées étaient correctes.
Comment rechercher des données HTML à l'aide de Beautiful Soup
Cependant, s'il s'agit d'une page statique, je pourrais la tester en utilisant Beautifulsoup, mais je ne pouvais pas obtenir de données HTML pour un écran avec une sécurité renforcée, comme un écran compatible SSL.
Par conséquent, si vous ne pouvez pas obtenir les données HTML avec Beautiful soup, nous avons décidé d'utiliser Selenium pour passer à l'écran cible et obtenir la page HTML.
Voici un programme qui acquiert des données HTML en utilisant Beautiful soup et Selenium.
test.py
import time
from selenium import webdriver
from bs4 import BeautifulSoup
import re
#De l'écran qui peut être transféré à l'écran qui n'a pas pu être acquis par Beautiful soupe
driver.get("test.html")
driver.find_element_by_css_selector("test").click()
#Si vous pouvez passer à l'écran cible
source = driver.page_source
soup = BeautifulSoup(source,'html.parser')
elems = soup.find_all("script",text=re.compile("test"))
#Passer à l'écran suivant
driver.find_element_by_css_selector("test").click()
…
Vous pouvez utiliser Beautiful Soup tel quel pour analyser les données HTML.
source = driver.page_source
soup = BeautifulSoup(source,'html.parser')
Il n'y a aucun problème si vous utilisez le ** ".page_source" ** de Selenium pour obtenir les données HTML.
Créez le programme ci-dessus pour chaque écran requis et vous avez terminé. De plus, dans le cas du programme ci-dessus, Chrome démarre lorsque vous le lancez, il peut donc être préférable de le démarrer avec Headless. (Je n'utilise pas très souvent Headless car Selenium s'arrête souvent avec une erreur ...)
Référence: J'ai essayé d'utiliser Headless Chrome de Selenium
Recommended Posts