Zunächst einmal, ich weiß, es gibt eine Reihe von ähnlichen Fragen, aber leider keiner von ihnen für mich arbeiten. Ich bin ein relativer Anfänger in Python und einfache Erklärungen und Antworten würden sehr geschätzt werden.Wie scrape eine Website, die Anmeldung mit Python erfordert
Ich muss mich auf einer Website mit Python programmgesteuert anmelden. Ich versuche dies mit Anfragen zu tun. Ich habe mir YouTube-Videos zu diesem Thema angesehen und verschiedene Fragen und Antworten angeschaut, aber es funktioniert einfach nicht für mich.
Der folgende Code ist so nah wie ich mein Ziel erreicht habe. Die IDE, die ich verwende, ist Spyder 3.1.2 mit Python 3.6.0. Meine Ausgabe wird als [] angezeigt, wie unter meinem Code gezeigt. Ich habe die gleiche Methode mit anderen Seiten versucht und die Ausgabe ist immer gleich. Ich weiß nicht, was das aber bedeutet. Und wie würde ich wissen, ob der Code funktioniert hat?
import requests
from lxml import html
USERNAME = "username"
PASSWORD = "password"
LOGIN_URL = "https://bitbucket.org/account/signin/?next=/"
URL = "https://bitbucket.org/"
def main():
session_requests = requests.session()
# Get login csrf token
result = session_requests.get(LOGIN_URL)
tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value")))[0]
# Create payload
payload = {
"username": USERNAME,
"password": PASSWORD,
"csrfmiddlewaretoken": authenticity_token
}
# Perform login
result = session_requests.post(LOGIN_URL, data = payload, headers = dict(referer = LOGIN_URL))
# Scrape url
result = session_requests.get(URL, headers = dict(referer = URL))
tree = html.fromstring(result.content)
bucket_names = tree.xpath("//div[@class='repo-list--repo']/a/text()")
print(bucket_names)
if __name__ == '__main__':
main()
runfile ('C: /Users/Thomas/untitled6.py', wdir = 'C:/Users/Thomas') []
Vielen Dank im Voraus.
Hühnerbrühe.