Explication détaillée de l'utilisation de l'outil d'exploration Python Selenium

高洛峰
Libérer: 2017-03-08 11:25:09
original
2432 Les gens l'ont consulté

Introduction :

Lors de l'utilisation de Python pour explorer des pages dynamiques, l'urllib2 ordinaire ne peut pas être implémenté. Par exemple, la page d'accueil JD ci-dessous chargera le nouveau contenu comme la barre de défilement. tiré vers le bas, et urllib2 ne peut pas explorer ce contenu. Pour le moment, le protagoniste d'aujourd'hui est nécessaire.

Explication détaillée de lutilisation de loutil dexploration Python Selenium

Selenium est un outil de test d'applications Web. Les tests Selenium s'exécutent directement dans le navigateur, tout comme les vrais utilisateurs. Les navigateurs pris en charge incluent IE, Mozilla Firefox, Mozilla Suite, etc. Il est également très pratique de l'utiliser pour explorer des pages. Il vous suffit de suivre les étapes d'accès pour simuler une opération humaine. Vous n'avez pas à vous soucier du traitement des cookies et de la session. Cela peut même vous aider à saisir votre compte et votre mot de passe. puis cliquez sur le bouton de connexion. Pour la barre de défilement ci-dessus, il vous suffit de faire défiler le navigateur vers le bas et d'enregistrer la page. Les fonctions ci-dessus sont très utiles lorsqu'il s'agit de certains mécanismes anti-crawler. Ensuite, nous commencerons le texte principal de notre explication et vous amènerons à explorer une page Web dynamique qui nécessite une connexion.

Implémentation du cas :

Pour utiliser Selnium, vous devez sélectionner un navigateur appelant et télécharger le pilote correspondant. Dans la version de bureau, vous devez. Vous pouvez choisir Chrome FireFox, etc., vous pouvez utiliser PhantomJS côté serveur, et la version de bureau peut être directement appelée dans le navigateur pour observer les changements, nous pouvons donc généralement changer le navigateur en PhantomJS après avoir débogué la version de bureau avec. Chrome, etc. puis téléchargez-le sur le serveur pour l'exécuter, ici Nous utilisons directement PhantomJS pour la démonstration

Tout d'abord, importez le module :

.

 from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
 from selenium import webdriver
Copier après la connexion

Ensuite, initialisez un navigateur Vous pouvez spécifier certains attributs de la page Web chargée dans les paramètres :

cap = webdriver.DesiredCapabilities.PHANTOMJS
cap["phantomjs.page.settings.resourceTimeout"] = 180
cap["phantomjs.page.settings.loadImages"] = False

driver = webdriver.PhantomJS(executable_path="/home/gaorong/phantomjs-2.1.1-linux-x86_64/bin/phantomjs", desired_capabilities=cap)
Copier après la connexion

Ce qui précède initialise PhantomJS et définit le chemin du navigateur. L'attribut de chargement est sélectionné. Délai d'expiration du chargement des ressources et aucun chargement des images (nous nous soucions uniquement du texte de la page Web). Vous pouvez également choisir d'autres paramètres ici.

Définir certaines propriétés et télécharger une page Web

driver.set_page_load_timeout(180)     
driver.get('http://www.php.cn/')
time.sleep(5)
driver.save_screenshot('./login.png')   #为便于调试,保存网页的截图
Copier après la connexion

Étant donné que les erreurs sont inévitables lors de l'exécution côté serveur, vous pouvez utiliser save_screenshot pour enregistrer la page Web actuelle afin de faciliter le débogage.

L'étape suivante consiste à saisir le compte et le mot de passe pour vous connecter afin d'obtenir les cookies du site pour les demandes ultérieures.

#输入username和password 
driver.find_element_by_xpath("/html/body/div[1]/div[1]/login/div[2]/div/form/input[1]").send_keys('*****')   
time.sleep(1)
print 'input user success!!!'

driver.find_element_by_xpath("/html/body/div[1]/div[1]/login/div[2]/div/form/input[2]").send_keys('****')
time.sleep(1)
print 'input password success!!!'

driver.find_element_by_xpath("/html/body/div[1]/div[1]/login/div[2]/div/form/button").click()
time.sleep(5)
Copier après la connexion

Le code ci-dessus utilise find_element_by_xpath pour obtenir la position de la zone de saisie, entrez le compte et le mot de passe et cliquez sur le bouton de connexion. Vous pouvez voir que c'est très pratique. Il passera automatiquement à la page suivante, il suffit de dormir quelques secondes et d'attendre.

Les informations de la page Web que nous devons explorer se trouvent dans un élément spécifique, nous devons donc déterminer si cet élément apparaît :

try:
     element = WebDriverWait(driver, 10).until(
         EC.presence_of_element_located((By.CLASS_NAME, 'pulses'))
     )
     print 'find element!!!'        
 except:
     print 'not find element!!!'
     print traceback.format_exc()
     driver.quit()
Copier après la connexion

Ce qui précède détermine si l'élément de classe « pulse » apparaît. S'il n'apparaît pas après 10 secondes d'attente, le sélénum provoquera une erreur TimeoutError.

L'initialisation de base a été effectuée ci-dessus, puis le contenu dynamique doit être traité. Cette page Web, comme JD.com, affichera automatiquement le contenu avec la liste déroulante, donc nous. besoin d'implémenter la barre de défilement déroulante :

print 'begin scroll to get info page...'
t1 = time.time()
n = 60   #这里可以控制网页滚动距离
for i in range(1,n+1):
    s = "window.scrollTo(0,document.body.scrollHeight/{0}*{1});".format(n,i)
    #输出滚动位置,网页大小,和时间
    print s, len(driver.page_source),time.time()-t1
    driver.execute_script(s)
    time.sleep(2)
Copier après la connexion

où driver.page_source doit obtenir le texte de la page Web. Une fois le défilement terminé, nous pouvons l'appeler et l'écrire dans un fichier. Ceci complète la logique du programme.

Avancé :

L'utilisation de Selenim peut gérer les stratégies anti-crawler courantes, car elle équivaut à une personne naviguant sur le Web, mais un traitement supplémentaire est requis pour les codes de vérification. . et un autre point est que la vitesse d'accès ne peut pas être trop rapide. Après tout, il faut appeler un navigateur. S'il est trop lent, nous pouvons l'utiliser si nécessaire, nous pouvons utiliser la bibliothèque de requêtes pour fonctionner. .

Voici deux blogs auxquels vous pouvez vous référer : Python Crawler Tool Five : Utilisation du sélénium et fonctions communes


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!