Grattage avec Selenium + Python Partie 1

Dernier examen

J'ai essayé d'obtenir les informations de la page après m'être connecté à l'aide de Goutte la dernière fois, mais j'ai été vaincu par l'authentification d'image. https://qiita.com/shioharu_/private/818154ac145c78076487

Alors cette fois, je vais changer de méthode et gratter avec Selenium + Python!

introduction

Utilisation de Vagrant et VirtualBox sur Windows 10 Présentez Selenium, Python, Chrome Driver à CentOS 7.0 dans un environnement virtuel.

Présenté en référence à la sagesse de nos prédécesseurs. https://worklog.be/archives/3422

Essayez d'utiliser

sample.py


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1280,1024')
 
driver = webdriver.Chrome(options=options)
driver.get('https://www.yahoo.co.jp/')
 
driver.save_screenshot('test.png')
driver.quit()

Exécuter

python sample.py


test_.png

La première page de Yahoo a été capturée en toute sécurité, donc l'exemple semble correct!

Dernier numéro

La dernière fois, j'avais une authentification d'image et je ne pouvais pas afficher l'écran après la connexion. Selenium a un processus de veille, donc si vous vous connectez manuellement pendant ce temps, vous devriez pouvoir accéder à la page d'authentification d'image! J'ai pensé, mais j'ai trouvé qu'en spécifiant le chemin du profil de Chrome, il maintiendra l'état du profil spécifié. https://rabbitfoot.xyz/selenium-chrome-profile/

Après tout, il vous suffit de spécifier le chemin du profil lorsque vous êtes manuellement connecté à l'avance. Merci d'être concis.

Puisque j'utilise CentOS, qui est un environnement virtuel, j'ai pensé que si je mets un lien symbolique de l'environnement Windows sur la destination de montage, il sera référencé à partir de là.

Exemple

mklink /J "C:\Users\[Nom d'utilisateur]\Desktop\work\vagrant\User Data" "C:\Users\[Nom d'utilisateur]\AppData\Local\Google\Chrome\User Data"


Réécrivons la source de l'échantillon et exécutons-la

sample2.py


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1280,1024')
options.add_argument('--user-data-dir=Chemin de profil avec lien symbolique')
 
driver = webdriver.Chrome(options=options)
driver.get('https://p.eagate.573.jp/game/2dx/27/ranking/weekly.html')
 
driver.save_screenshot('test2.png')
driver.quit()

pourtant

Il y a eu une capture impitoyable d'une image non connectée ...

hilogin.png

La cause était que la référence de chemin de profil ne fonctionnait pas correctement. Il y a une différence entre le profil de chrome installé dans l'environnement virtuel et le profil de chrome côté windows ... Il n'y a donc aucun intérêt à lier de force dans un environnement virtuel, je voudrais donc installer Python et Selenium du côté Windows et les exécuter.

Préférences côté Windows

Référence: https://mylife8.net/install-selenium-and-run-on-windows/

Python https://www.python.org/downloads/ Aucune remarque particulière car il ne suit que l'installateur

Selenium Après avoir installé Python, vous pouvez l'installer en exécutant ce qui suit à partir de l'invite de commande.

ChromeDriver https://sites.google.com/a/chromium.org/chromedriver/downloads Téléchargez le même pilote Chrome que votre version Chrome. L'emplacement de chromedriver.exe peut être n'importe où, mais je le mets au même endroit que Python pour une compréhension facile.

\Users\[Nom d'utilisateur]\AppData\Local\Programs\Python\Python38\chromedriver.exe


La variable d'environnement PATH a également été définie ci-dessus.

Exécuter du côté Windows

Connectez-vous à l'avance depuis Chrome à l'adresse https://p.eagate.573.jp/game/2dx/27/ranking/weekly.html, Gardons Chrome fermé. Réécrivez la source ci-dessous et exécutez!

sample3.py


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1280,1024')
options.add_argument('--user-data-dir=C:\\Users\\[Nom d'utilisateur]\\AppData\\Local\\Google\\Chrome\\User Data')
 
driver = webdriver.Chrome(options=options)
driver.get('https://p.eagate.573.jp/game/2dx/27/ranking/weekly.html')
 
driver.save_screenshot('test3.png')
driver.quit()

Je l'ai eu en toute sécurité! screencapture-p-eagate-573-jp-game-2dx-27-ranking-weekly-html-2020-05-10-13_26_24.png

La partie que vous voulez réellement est la partie de classement, alors faites des essais pour voir si vous pouvez atteindre la partie de classement. Essayez de cliquer et d'ajuster la position de la page pour afficher la partie souhaitée.

sample4.py


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1280,1024')
options.add_argument('--user-data-dir=C:\\Users\\[Nom d'utilisateur]\\AppData\\Local\\Google\\Chrome\\User Data')

driver = webdriver.Chrome(options=options)
driver.get('https://p.eagate.573.jp/game/2dx/27/ranking/weekly.html')
driver.find_element_by_xpath("/html/body/div/div[1]/div/div/div[2]/div/div[2]/form/div[2]/ul[1]/li[3]/input").click()
time.sleep(3)

driver.execute_script("window.scrollTo(0, 800)")
time.sleep(3)

driver.save_screenshot('sample.png')
driver.quit()

Ça a l'air bien! _sample.png

Commentaire général

Recommended Posts

Grattage avec Selenium + Python Partie 1
Grattage avec Selenium + Python Partie 2
Grattage avec du sélénium [Python]
Grattage au sélénium en Python
Grattage avec du sélénium en Python
Grattage au sélénium
Grattage au sélénium ~ 2 ~
Grattage avec Python
Grattage avec du sélénium
Python: grattage partie 1
Python: grattage, partie 2
Scraping avec Selenium en Python (Basic)
Grattage avec Python, Selenium et Chromedriver
Grattage réussi avec Selenium
Grattage en Python (préparation)
Essayez de gratter avec Python.
Automatisez des tâches simples avec Python Part1 Scraping
Grattage avec Python + PhantomJS
ScreenShot avec Selenium (édition Python)
[Part1] Scraping avec Python → Organisez jusqu'à csv!
Pratiquer le web scraping avec Python et Selenium
Scraping avec Python + PyQuery
Scraping RSS avec Python
Traitement d'image avec Python (partie 2)
J'ai essayé de gratter avec Python
Etudier Python avec freeCodeCamp part1
Images en bordure avec python Partie 1
Grattage avec chromedriver en python
Grattage festif avec Python, scrapy
Python: travailler avec Firefox avec du sélénium
Etudier Python avec freeCodeCamp part2
Traitement d'image avec Python (partie 1)
Grattage avec Tor en Python
Résolution de Nampre avec Python (partie 2)
Web scraping avec Selenium (Python)
Traitement d'image avec Python (3)
Scraping prévisions météorologiques avec python
[Python + Selenium] Conseils pour le grattage
J'ai essayé de gratter avec du python
Web scraping débutant avec python
Gratter la page i-town avec du sélénium
J'étais accro au grattage avec Selenium (+ Python) en 2020
[Scraping] Scraping Python
Essayez de gratter avec Python + Beautiful Soup
Jouez des nombres manuscrits avec Python Partie 1
Scraping avec Node, Ruby et Python
[Automatisé avec python! ] Partie 1: fichier de configuration
Web scraping avec Python Première étape
J'ai essayé webScraping avec python.
Grattage avec Python et belle soupe
Faisons du scraping d'images avec Python
Obtenez les tendances Qiita avec le scraping Python
Automatisez des tâches simples avec Python Part0
[Automatisé avec python! ] Partie 2: Fonctionnement des fichiers
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Obtenez des informations météorologiques avec Python et le grattage
Obtenez des informations sur la propriété en grattant avec python