Scraping Web Python - Sites Web basés sur des formulaires

Dans le chapitre précédent, nous avons vu gratter des sites Web dynamiques. Dans ce chapitre, laissez-nous comprendre le grattage de sites Web qui fonctionnent sur des entrées basées sur l'utilisateur, c'est-à-dire des sites Web basés sur des formulaires.

introduction

Ces jours-ci, le WWW (World Wide Web) se dirige vers les médias sociaux ainsi que vers les contenus générés par l'utilisateur. La question se pose donc de savoir comment accéder à ce type d'informations qui se trouvent au-delà de l'écran de connexion? Pour cela, nous devons gérer les formulaires et les connexions.

Dans les chapitres précédents, nous avons travaillé avec la méthode HTTP GET pour demander des informations, mais dans ce chapitre, nous travaillerons avec la méthode HTTP POST qui transmet les informations à un serveur Web pour le stockage et l'analyse.

Interagir avec les formulaires de connexion

Lorsque vous travaillez sur Internet, vous devez avoir interagi plusieurs fois avec les formulaires de connexion. Ils peuvent être très simples comme n'inclure que très peu de champs HTML, un bouton d'envoi et une page d'action ou ils peuvent être compliqués et avoir des champs supplémentaires comme le courrier électronique, laisser un message avec captcha pour des raisons de sécurité.

Dans cette section, nous allons traiter un simple formulaire de soumission à l'aide de la bibliothèque de requêtes Python.

Tout d'abord, nous devons importer la bibliothèque de requêtes comme suit -

import requests

Maintenant, nous devons fournir les informations pour les champs du formulaire de connexion.

parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}

Dans la prochaine ligne de code, nous devons fournir l'URL sur laquelle l'action du formulaire se produirait.

r = requests.post(“enter the URL”, data = parameters)
print(r.text)

Après avoir exécuté le script, il renverra le contenu de la page où l'action s'est produite.

Supposons que si vous souhaitez soumettre une image avec le formulaire, alors c'est très facile avec requests.post (). Vous pouvez le comprendre à l'aide du script Python suivant -

import requests
file = {‘Uploadfile’: open(’C:\Usres\desktop\123.png’,‘rb’)}
r = requests.post(“enter the URL”, files = file)
print(r.text)

Chargement des cookies depuis le serveur Web

Un cookie, parfois appelé cookie Web ou cookie Internet, est un petit élément de données envoyé depuis un site Web et notre ordinateur le stocke dans un fichier situé dans notre navigateur Web.

Dans le cadre des transactions avec les formulaires de connexion, les cookies peuvent être de deux types. Un, nous avons traité dans la section précédente, qui nous permet de soumettre des informations à un site Web et le second qui nous permet de rester dans un état permanent «connecté» tout au long de notre visite sur le site. Pour le deuxième type de formulaires, les sites Web utilisent des cookies pour savoir qui est connecté et qui ne l'est pas.

Que font les cookies?

De nos jours, la plupart des sites Web utilisent des cookies pour le suivi. Nous pouvons comprendre le fonctionnement des cookies à l'aide des étapes suivantes -

Step 1- Tout d'abord, le site authentifiera nos identifiants de connexion et les stockera dans le cookie de notre navigateur. Ce cookie contient généralement un toke généré par le serveur, un délai d'expiration et des informations de suivi.

Step 2- Ensuite, le site Web utilisera le cookie comme preuve d'authentification. Cette authentification est toujours affichée chaque fois que nous visitons le site Web.

Les cookies sont très problématiques pour les web scrapers car si les web scrapers ne gardent pas trace des cookies, le formulaire soumis est renvoyé et à la page suivante, il semble qu'ils ne se soient jamais connectés. Il est très facile de suivre les cookies avec l'aide de Python requests bibliothèque, comme indiqué ci-dessous -

import requests
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = requests.post(“enter the URL”, data = parameters)

Dans la ligne de code ci-dessus, l'URL serait la page qui agira en tant que processeur pour le formulaire de connexion.

print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)

Après avoir exécuté le script ci-dessus, nous récupérerons les cookies du résultat de la dernière requête.

Il existe un autre problème avec les cookies: parfois, les sites Web modifient fréquemment les cookies sans avertissement. Ce genre de situation peut être traitérequests.Session() comme suit -

import requests
session = requests.Session()
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = session.post(“enter the URL”, data = parameters)

Dans la ligne de code ci-dessus, l'URL serait la page qui agira en tant que processeur pour le formulaire de connexion.

print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)

Notez que vous pouvez facilement comprendre la différence entre un script avec session et sans session.

Automatiser les formulaires avec Python

Dans cette section, nous allons traiter d'un module Python nommé Mechanize qui réduira notre travail et automatisera le processus de remplissage des formulaires.

Module de mécanisation

Le module Mechanize nous fournit une interface de haut niveau pour interagir avec les formulaires. Avant de commencer à l'utiliser, nous devons l'installer avec la commande suivante -

pip install mechanize

Notez que cela ne fonctionnerait qu'en Python 2.x.

Exemple

Dans cet exemple, nous allons automatiser le processus de remplissage d'un formulaire de connexion comportant deux champs à savoir l'email et le mot de passe -

import mechanize
brwsr = mechanize.Browser()
brwsr.open(Enter the URL of login)
brwsr.select_form(nr = 0)
brwsr['email'] = ‘Enter email’
brwsr['password'] = ‘Enter password’
response = brwsr.submit()
brwsr.submit()

Le code ci-dessus est très facile à comprendre. Tout d'abord, nous avons importé le module de mécanisation. Ensuite, un objet navigateur Mechanize a été créé. Ensuite, nous avons accédé à l'URL de connexion et sélectionné le formulaire. Après cela, les noms et les valeurs sont transmis directement à l'objet navigateur.