Lorsque vous créez un système pour l'apprentissage automatique à l'aide de Python, vous pouvez utiliser des données qui peuvent être utilisées sans restrictions sur les mécanismes de contrôle tels que les brevets, appelés données ouvertes publiées sur Internet. Bien sûr, nous utilisons les données acquises pour mettre à jour efficacement le modèle, mais il y a des moments où nous voulons l'automatiser. Cette fois, j'utiliserai Selenium pour ce que l'on appelle le Web scraping.
Les téléchargements mécaniques sont souvent interdits, veuillez donc lire les termes et conditions du site que vous visitez.
D'après ce que j'ai vérifié, il y a quelques cadres de sélection, mais je ne l'ai pas utilisé cette fois, donc je vais essayer d'utiliser Selenium. À ma connaissance, Selenium est un outil qui automatise les opérations d'écran sur le Web, mais il utilise l'automatisation des opérations d'écran pour le scraping.
Un pilote appelé WebDriver est requis entre Selenium et le navigateur (Chrome cette fois).
Python utilise Anaconda, donc installez-le avec conda.
conda install selenium
WebDriver a téléchargé le fichier binaire sur http://chromedriver.chromium.org/downloads Vous pouvez soit le copier à un emplacement où Path passe, soit l'installer avec pip. Cette fois, installez avec pip (conda).
conda install chromedriver-binary
Maintenant que l'environnement est terminé, exécutons d'abord l'exemple à partir du site chromedriver ci-dessous. Le contenu est que le site Google est affiché, ChromeDriver est recherché, et il dort pendant 5 secondes et se termine. http://chromedriver.chromium.org/getting-started
test1.py
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.google.com/');
time.sleep(5) # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5) # Let the user actually see something!
driver.quit()
python test1.py
Une fois exécuté, le navigateur démarre et commence à rechercher le pilote Chrome. Le navigateur dit "Contrôlé par un logiciel de test automatisé"! Et c'est facile!
Puisqu'il est solitaire de terminer le démarrage de l'exemple, je vais créer un exemple qui télécharge le CSV à partir du site suivant.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
download_dir = 'C:\\project'
prefs = {}
prefs['download.prompt_for_download'] = False
prefs['download.directory_upgrade'] = True
prefs['download.default_directory'] = download_dir
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://XXXXXXXXXXXXXXXXXXXXXX');
time.sleep(5) # Let the user actually see something!
url = driver.find_element_by_partial_link_text("Données quotidiennes(CSV)")
driver.command_executor._commands["send_command"] = (
"POST",
'/session/$sessionId/chromium/send_command'
)
params = {
'cmd': 'Page.setDownloadBehavior',
'params': {
'behavior': 'allow',
'downloadPath': download_dir
}
}
driver.execute("send_command", params=params)
driver.get(url.get_attribute('href'));
time.sleep(5) # Let the user actually see something!
driver.quit()
Dans la partie suivante du code, masquez le navigateur en passant --headless comme option lors du démarrage du navigateur.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=options)
La partie suivante du code spécifie où enregistrer le fichier téléchargé.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
download_dir = 'C:\\project'
prefs = {}
prefs['download.prompt_for_download'] = False
prefs['download.directory_upgrade'] = True
prefs['download.default_directory'] = download_dir
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=options)
Dans le cas de --hedless, un code supplémentaire pour spécifier la destination de sauvegarde du fichier téléchargé est requis.
driver.command_executor._commands["send_command"] = (
"POST",
'/session/$sessionId/chromium/send_command'
)
params = {
'cmd': 'Page.setDownloadBehavior',
'params': {
'behavior': 'allow',
'downloadPath': download_dir
}
}
driver.execute("send_command", params=params)
Ceci termine le téléchargement! Facile.
Il semble que le code augmentera si vous faites des choses compliquées, mais si vous avez utilisé Selenium, je pense que vous pouvez choisir Selenium pour le web scraping. L'inconvénient est que plus de pilotes de navigateur et plus de choses à installer. Cela semble pratique si le script Selenium créé fonctionne sur le navigateur, mais il semble encore incomplet.
Recommended Posts