2014-04-16 3 views
22

Wenn ich eine Website, die Login mit Passwort erfordert zuerst kratzen, wie kann ich beginnen, es mit Python mit BeautifulSoup4-Bibliothek scraping? Unten ist, was ich für Websites tun, die keine Anmeldung erfordern.Wie scrappe ich eine Website, die eine Anmeldung mit Python und BeautifulSoup erfordert?

from bs4 import BeautifulSoup  
import urllib2 
url = urllib2.urlopen("http://www.python.org")  
content = url.read()  
soup = BeautifulSoup(content) 

Wie sollte der Code geändert werden, um die Anmeldung zu ermöglichen? Angenommen, die Website, die ich scrappen möchte, ist ein Forum, das eine Anmeldung erfordert. Ein Beispiel dafür ist http://forum.arduino.cc/index.php

Antwort

34

Sie mechanize verwenden können:

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() 

Oder urllib - Login to website using urllib2

+0

'br.form [' Benutzername '] =' Benutzername ' ist der erste' Benutzername 'der Name des Formulars und der zweite der tatsächliche Benutzername? –

+3

@DanS. Dies ist ziemlich spät .. aber für jeden, der das sieht, ja .. der erste Benutzername ist der Name des Formularfelds .. und der zweite Benutzername wäre der tatsächliche Benutzername, den Sie in dieses Formularfeld eingeben würden. –

1

Sie Selen können sich anmelden und die Seite Quelle abzurufen, die Sie dann auf schöne Suppe passieren kann extrahiere die gewünschten Daten.

+4

Erwägen Sie, weitere Details in Ihrer Antwort anzugeben. – Script47

Verwandte Themen