2017-02-21 76 views
3

首先,我知道有一堆類似的問題,但不幸的是他們都沒有爲我工作。我是Python中的相對noob,簡單的解釋和答案將不勝感激。如何刮掉需要用Python登錄的網站

我需要使用python以編程方式登錄到站點。我正在嘗試使用請求執行此操作。我已經觀看了關於這個主題的YouTube視頻,並查看了各種問題和答案,但它對我來說不起作用。

下面的代碼和我實現我的目標一樣接近。我使用的IDE是Spyder 3.1.2和python 3.6.0。我的輸出顯示爲[],如下面的代碼所示。我已經嘗試了與其他網站相同的方法,並且輸出始終是相同的。但我不知道這意味着什麼。我怎麼知道代碼是否工作?

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:/用戶/托馬斯') []

預先感謝您。

chickencreature。

回答

0

試試這個。

result = requests.get(LOGIN_URL, auth=(USERNAME,PASSWORD)) 

退房的這些類似的問題的答案ThisThis
Here是使用請求認證的文檔模塊