web-dev-qa-db-fra.com

Comment gratter un site Web qui nécessite une connexion en utilisant python et beautifulsoup?

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

42
user781486

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

50
4d4c

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.

3
user8495890