1

Nur eine Frage bezüglich einiger Scraping-Authentifizierung. Mit BeautifulSoup:Scrapping einer Website mit Python 3, die Login benötigt

#importing the requests lib 
import requests 
from bs4 import BeautifulSoup 

#specifying the page 
page = requests.get("http://localhost:8080/login?from=%2F") 
#parsing through the api 
soup = BeautifulSoup(page.content, 'html.parser') 
print(soup.prettify()) 

Von hier den Ausgang, ich glaube, wichtig wäre:

<table> 
    <tr> 
    <td> 
    User: 
    </td> 
    <td> 
    <input autocapitalize="off" autocorrect="off" id="j_username" name="j_username" type="text"/> 
    </td> 
    </tr> 
    <tr> 
    <td> 
    Password: 
    </td> 
    <td> 
    <input name="j_password" type="password"/> 
    </td> 
    </tr> 
    <tr> 
    <td align="right"> 
    <input id="remember_me" name="remember_me" type="checkbox"/> 
    </td> 
    <td> 
    <label for="remember_me"> 
     Remember me on this computer 
    </label> 
    </td> 
    </tr> 
    </table> 

Diese auf der Website feinen kratzt, aber es erfordert eine Anmeldung. Hier verwende ich die mechanicalsoup Bibliothek:

import mechanicalsoup 

browser = mechanicalsoup.StatefulBrowser() 
browser.open("http://localhost:8080/login?from=%2F") 
browser.get_url() 
browser.get_current_page() 
browser.get_current_page().find_all('form') 
browser["j_username"] = "admin" 
browser ["j_password"] = "password" 
browser.launch_browser() 

aber es wird immer noch nicht lassen Sie mich einloggen.

Hat jemand ein Scraping-Tool für Python 3 verwendet, mit dem er eine Site mit Authentifizierung scrappen kann?

+0

Sie könnten etwas wie Selenium verwenden. Es ermöglicht Ihnen, mit der Website zu interagieren, um Dinge wie eine Anmeldung zu tun. –

+3

haben Sie die Anfragen Methoden für auth ausprobiert? http://docs.python-requests.org/en/master/user/authentication/ – Lupanoide

Antwort

1

Ich sehe, dass Sie Anfragen verwenden. Die Syntax für die Anmeldung bei einer Site lautet wie folgt:

import requests 
page = requests.get("http://localhost:8080/login?from=%2F", auth= 
('username', 'password')) 

Hoffe, das hilft! Sie können mehr über die Authentifizierung hier lesen: http://docs.python-requests.org/en/master/user/authentication/

0

Mit MechanicalSoup müssen Sie zuerst das Formular angeben, das Sie ausfüllen und senden möchten. Wenn Sie nur eine Form haben, verwenden:

browser.select_form() 

Dann, nach Auffüllen in Form, müssen Sie es einreichen:

browser.submit_selected() 

Sie können die (neu geschrieben) MechanicalSoup tutorial oder suchen Sie lesen auf Beispiele wie logging in into GitHub with MechanicalSoup.