Веб-утилита Python с использованием lxml - PullRequest
0 голосов
/ 30 апреля 2018

Я следую этому учебнику, и я получаю доступ к своему битбакету и получаю все данные, но когда я использую его на другом сайте, который также должен был войти в систему. Это не сработало.

Когда я распечатываю контент, я все еще складываюсь на странице входа. Учетные данные верны и токен на сайте - это я успешно получаю значение. Bdw сайт сделан из laravel.

Код в учебнике

import requests
from lxml import html

USERNAME = "<USERNAME>"
PASSWORD = "<PASSWORD>"

LOGIN_URL = "https://bitbucket.org/account/signin/?next=/"
URL = "https://bitbucket.org/dashboard/repositories"

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