使用Python来请求需要登录的draftkings.com信息?

时间:2016-12-01 05:16:45

标签: python authentication web python-requests screen-scraping

我试图从网址获取比赛数据:" https://www.draftkings.com/contest/gamecenter/32947401"

如果您访问此网址但尚未登录,则只需将您重定向到大厅即可。如果您已登录,则会实际向您显示比赛结果。

以下是我尝试过的一些事情:

- 首先,我使用Chrome的Dev网络工具在我手动登录时观看请求

- 然后我尝试复制我认为包含身份验证信息的cookie,它的格式为:

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

- 然后我将该cookie存储为Evironment变量并运行此代码:

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

没有运气,这只是给了我大厅。

然后我尝试了内置的请求:

  • HTTPBasicAuth
  • HTTPDigestAuth

这里也没有运气。

到目前为止,我还没有蟒蛇专家,而且我已经非常精疲力尽,我所知道的以及我找到的搜索结果。有什么想法吗?

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

使用fiddler查看他们在您尝试登录时所做的确切请求。然后在请求包中使用Session类。

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

这将在您的会话变量中保存您网址中的所有Cookie(就像您使用浏览器时一样)。 然后使用适当的数据向登录URL发送帖子请求。

您不必手动传递cookie数据,因为它是您第一次访问网站时自动生成的。但是,您可以通过以下方式明确设置一些标题,如UserAgent等:

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

HTTPBasicAuth& HTTPDigestAuth可能无法在网站上运行。