Si je veux d'abord gratter un site Web qui nécessite une connexion avec un mot de passe, comment puis-je commencer à le gratter avec python en utilisant la bibliothèque beautifulsoup4? Voici ce que je fais pour les sites Web qui ne nécessitent pas de connexion.
from bs4 import BeautifulSoup
import urllib2
url = urllib2.urlopen("http://www.python.org")
content = url.read()
soup = BeautifulSoup(content)
Comment le code doit-il être modifié pour s'adapter à la connexion? Supposons que le site Web que je souhaite supprimer est un forum qui nécessite une connexion. Un exemple est http://forum.arduino.cc/index.php
Vous pouvez utiliser mécaniser:
import mechanize
from bs4 import BeautifulSoup
import urllib2
import cookielib
cj = cookielib.CookieJar()
br = mechanize.Browser()
br.set_cookiejar(cj)
br.open("https://id.arduino.cc/auth/login/")
br.select_form(nr=0)
br.form['username'] = 'username'
br.form['password'] = 'password.'
br.submit()
print br.response().read()
Ou urllib - Connectez-vous au site Web en utilisant urllib2
Vous pouvez utiliser Selenium pour vous connecter et récupérer la source de la page, que vous pouvez ensuite transmettre à Beautiful Soup pour extraire les données souhaitées.