2016-08-15 3 views
1

Mon but est de pouvoir manipuler automatiquement une page web avec un script. Remplir les informations et sélectionner la bonne liste déroulante. Avec une entrée minimale de l'utilisateur.Manipuler des pages web avec python

Donc, mon exemple ici, j'utilise le site Web national de chemin de fer.

import win32com.client 
from time import sleep 

ie = win32com.client.Dispatch("InternetExplorer.Application") 
ie.Visible = 1 
ie.navigate("http://www.nationalrail.co.uk/") 

while ie.ReadyState != 4: # Wait for browser to finish loading 
    sleep(1) 
print("Webpage Loaded") 

page = ie.Document 

links = page.links 

Si je voulais changer la case Lorsque « Quitter » pour arriver, remplissez le De « Station/Code postal » et cliquez sur Go. Comment ferais-je cela?

Win32com est également la meilleure méthode pour manipuler des pages Web comme celle-ci?

+2

Je répondrai d'abord à votre deuxième question. La norme pour la simulation de navigateur est le module de sélénium pour Python. Si vous utilisez cette option, vous pouvez directement exécuter une sorte de JavaScript sur la page pour manipuler la page. La belle soupe ou module bs4 est utilisé pour gratter la page pour les liens. – ytpillai

Répondre

2

Alors que je suis sûr que chaque utilisateur Python peut apprécier que vous essayez de le faire de la manière la plus difficile possible, pourquoi ne pas rendre les choses plus facile pour vous et utiliser la bibliothèque Selenium?

Voilà votre code & ce que vous êtes essayer de le faire, en sélénium:

from selenium import webdriver 
driver = webdriver.Firefox() # Initialize the webdriver session 
driver.get('http://www.nationalrail.co.uk/') # replaces "ie.navigate" 
driver.find_element_by_id('sltArr').find_elements_by_tag_name('option')[1].click() # Selects the "Arrive" option 

Voir? Beaucoup mieux! Cette dernière ligne sélectionne le formulaire "Leaving", trouve les balises option et sélectionne l'option Arrive. Avec ce peu de code, vous devriez être en mesure de comprendre le reste de ce que vous voulez faire avec ce site.