2016-12-01 59 views
2

我想從網址中獲取比賽數據:「https://www.draftkings.com/contest/gamecenter/32947401使用Python請求需要登錄的draftkings.com信息?

如果您轉到此網址並且未登錄,它會重新引導您前往大廳。如果您已登錄,它實際上會向您顯示比賽結果。

這裏的一些事情,我試過:

- 首先,我使用Chrome的開發網絡工具來觀看請求,同時我手動登錄

-I然後試圖複製,我認爲包含身份驗證cookie的信息,它的形式是:

'ajs_anonymous_id=%123123123123123, mlc=true; optimizelyEndUserId' 

-I然後存儲在cookie裏的環境現狀變量,運行此代碼:

HEADERS= {'cookie': os.environ['MY_COOKIE'] } 
requests.get(draft_kings_url, headers= HEADERS) 

不幸的是,這只是給了我大堂。

我又試圖請求內置的:

  • HTTPBasicAuth
  • HTTPDigestAuth

這裏沒有任何運氣。

我不是Python專家,我已經用盡我所知道的和我發現的搜索結果。有任何想法嗎?

回答

0

你想要的工具是硒。沿着線的東西:

from selenium import webdriver 

browser = webdriver.Firefox() 
browser.get(r"https://www.draftkings.com/contest/gamecenter/32947401") 

username = browser.find_element_by_id("user") 
username.send_keys("username") 

password = browser.find_element_by_id("password") 
password.send_keys("top_secret") 

login = selenium.find_element_by_name("login") 
login.click() 
+0

嘿蝙蝠俠。我用你的答案進行了一些修改,它似乎工作! 一旦我登錄,是否有任何方式切換回使用請求?還是必須通過webdriver繼續完成所有工作? – TrolliOlli

+0

你絕對可以在兩者之間切換。您只需將cookies從webdriver傳輸到您的請求會話即可。看看[這個問題](http://stackoverflow.com/questions/32639014/is-it-possible-to-transfer-a-session-between-selenium-webdriver-and-requests-s) – Batman

+0

你可以登錄起草請求的國王。硒是矯枉過正。 – pguardiario

0

使用Fiddler看到當您嘗試登錄時,他們正在確切的請求,然後使用Session類的請求包。

import requests 
session = requests.Session() 
session.get('YOUR_URL_LOGIN_PAGE') 

這將在您的會話變量中保存您網址中的所有cookie(如使用瀏覽器時)。 然後使用適當的數據向登錄網址發送發佈請求。

您不必手動傳遞cookie數據,因爲它是在第一次訪問網站時自動生成的。然而,你可以設置一些頭明確像UserAgent等人:

session.headers.update({'header_name':'header_value'}) 

HTTPBasicAuth & HTTPDigestAuth可能行不通基於在網站上。