[Python + Selenium] Conseils pour le grattage

À propos de cet article

J'avais l'habitude de faire du grattage dans la pratique, c'est donc un mémo du truc que j'ai entré à ce moment-là.

outil

Python3(3.6.2) Selenium Chrome driver(85.0.4183.87)

1. Actionnez js (affichez les éléments cachés)

Vous pouvez utiliser Javascript à partir de Selenium en utilisant la méthode execute_script.

Par exemple, vous pouvez changer la couleur du texte en manipulant la méthode js setAttribute comme indiqué ci-dessous.

python


from selenium import webdriver
driver = webdriver.Chrome()

driver.get("https://www.hogefuga")

element = driver.find_element_by_xpath("//div[@class='fuga']/span")
driver.execute_script("arguments[0].setAttribute('style','color: red;')", element)

Vous pouvez également utiliser cette méthode pour afficher les éléments qui ont display: none;. Par exemple, vous pouvez afficher des éléments masqués en supprimant le nom de la classe à laquelle display: none; est appliqué à partir des éléments masqués.

python


#afficher en classe rapprochée:none;Si est appliqué
element = driver.find_element_by_xpath("//div[@class='hoge close']/span")
driver.execute_script("arguments[0].setAttribute('class','hoge')", element)

2. Récupérez les éléments dans l'iframe

Vous avez besoin de ** switch_to_frame () ** pour obtenir les éléments dans ifame.

python


driver.switch_to_frame(driver.find_element_by_xpath("//div[@class='hoge']/iframe"))

Vous pouvez maintenant obtenir les éléments dans ifame disponibles. En revanche, les éléments en dehors de l'iframe ne peuvent pas être obtenus. Par conséquent, si vous voulez obtenir l'élément d'origine, vous devez basculer afin de pouvoir récupérer l'élément d'origine par ** switch_to_default_content () **.

python


driver.switch_to_default_content()

3. Basculez la cible de l'opération de Selenium vers une autre fenêtre

Lors de l'utilisation du sélénium et du grattage, une autre fenêtre peut s'ouvrir après avoir cliqué sur le lien. Si vous souhaitez effectuer une opération sur une autre fenêtre, utilisez ** switch_to_window () ** pour basculer la cible de l'opération vers une autre fenêtre.

python


#Ouvrir une autre fenêtre
driver.find_element_by_xpath("//div[@class='hoge']/a").click()

#Fenêtre ouverte depuis le début
window_before = driver.window_handles[0]
#Fenêtre nouvellement ouverte
window_after = driver.window_handles[1]

#Basculer la cible d'opération du sélénium vers la fenêtre nouvellement affichée
driver.switch_to_window(window_after)

#Basculer la cible d'opération du sélénium vers la fenêtre qui est ouverte depuis le début
driver.switch_to_window(window_before)

4. Cliquez sur le bouton radio

python


#Obtenir un élément de bouton radio
element = driver.find_element_by_id(“fugafuga”)

driver.execute_script("arguments[0].click();", element)

5. Téléchargez le fichier depuis la page WEB avec Headless Chrome

Headless Chrome ne semble pas implémenter la fonction de téléchargement de fichiers par défaut du point de vue de la sécurité. Par conséquent, il semble nécessaire de configurer pour permettre le téléchargement de fichiers par communication postale.

python


from selenium import webdriver

DOWNLOAD_URL = "https:www.hogefuga/file/download"
download_dir = "/home/download"  #Emplacement des fichiers téléchargés

def enable_download(driver, download_dir):
    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)

def setting_chrome_options():
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument('--no-sandbox')
    return chrome_options;

driver = webdriver.Chrome(executable_path="/usr/local/bin/chromedriver",options=setting_chrome_options())
enable_download(driver, download_dir)
driver.get(DOWNLOAD_URL)

Recommended Posts

[Python + Selenium] Conseils pour le grattage
Selenium + WebDriver (Chrome) + Python | Création d'un environnement pour le scraping
Grattage au sélénium en Python
Grattage avec Selenium + Python Partie 1
Grattage avec du sélénium en Python
Grattage avec Selenium + Python Partie 2
~ Conseils pour les débutants de Python présentés avec amour par Pythonista ③ ~
astuces python
[Scraping] Scraping Python
Astuces Python
Astuces Python
Scraping avec Selenium en Python (Basic)
Grattage avec Python, Selenium et Chromedriver
[TouchDesigner] Conseils pour la déclaration par python
Conseils pour appeler Python à partir de C
Web scraping pour les débutants en Python (4) -1
30/10/2016 else pour Python3> pour:
Conseils Python Conda
python [pour moi]
Mémo de raclage Python
Grattage au sélénium
[Python / Selenium] XPath
Scraping Python get_ranker_categories
Grattage au sélénium ~ 2 ~
Grattage avec Python
Grattage WEB avec Python (pour mémo personnel)
Grattage avec Python
Conseils de débogage Python
Conseils pour gérer les binaires en Python
Astuces de clic Python
De manière inattendue (?) Connaissance du bean Python
Grattage avec du sélénium
Conseils pour utiliser python + caffe avec TSUBAME
Python: grattage partie 1
Conseils pour créer de petits outils avec python
Pratiquer le web scraping avec Python et Selenium
Scraping à l'aide de Python
Préparation au grattage au python [Saveur chocolat]
Écraser le fichier de téléchargement pour python selenium Chrome
[Pour les débutants] Essayez le web scraping avec Python
Python: grattage, partie 2
J'ai essayé le web scraping en utilisant python et sélénium
~ Conseils pour les débutants de Python donnés avec amour par Pythonista ① ~
Grattage des listes de programmes télévisés chargées dynamiquement [Python] [Selenium]
Conseils pour accéder à l'API ATND avec Python
[Python / Chrome] Paramètres de base et opérations de scraping
~ Conseils pour les débutants de Python donnés avec amour par Pythonista ② ~
À propos de Python for loop
Grattage en Python (préparation)
Astuces Python et Numpy
Bases de Python ② pour déclaration
UnicodeEncodeError: 'cp932' pendant le scraping Python
Principes de base du grattage Python
Grattage avec Python + PhantomJS
À propos de Python, pour ~ (plage)
Manuel python pour les débutants
Astuces Python (mon mémo)
Refactoring des outils utilisables avec Python
ScreenShot avec Selenium (édition Python)