2016-01-30 57 views
0

我正嘗試從Yahoo幻想足球頁面下載DOM。數據需要雅虎用戶。我正在尋找python庫,我可以添加我的用戶/傳遞到請求。Python3:使用用戶名/密碼從網頁下載DOM

的urllib具有HTTPBasicAuthHandler這就需要一個HTTPPasswordMgr Objects

的add_password場說我缺少一個說法,當我嘗試將它傳遞它想要的4。我不確定要爲該領域提供什麼。我是Python的新手。

我已經找到了Requests看有希望的,但是當我安裝它,它拋出一個錯誤,我不能正確導入:\

我希望這是一個有點容易在Python做!

import urllib.request 
try: 
    url = "http://football.fantasysports.yahoo.com/" 
    username = "un" 
    password = "pw" 

    pwObj = urllib.request.HTTPPasswordMgr.add_password("http://yahoo.com",url, username, password) 
    request = urllib.request.HTTPBasicAuthHandler(pwObj) 

    result = urllib.request.urlopen(request) 

    print(result.read()) 


except Exception as e: 
    print(str(e)) 
# Error: add_password() missing 1 required positional argument: 'passwd' 

理想的解決辦法必須有人需要憑據:)

+0

您確定此網站使用HTTP基本身份驗證嗎?它可能使用某種形式的基於會話的身份驗證。你有鏈接到認證頁面嗎? – mhawke

+0

是的,我正在使用的解決方案使用Selenium來欺騙瀏覽器。 – mattyd

+0

不知道Selenium與該網站是否使用HTTP基本身份驗證與基於會話的身份驗證相關的內容,但是,由於您使用的是Selenium,爲什麼不使用它來登錄並從網頁上抓取任何想要的數據呢? – mhawke

回答

1

這樣的頁面下載雅虎DOM數據:

import urllib.request 
try: 
    url = "http://football.fantasysports.yahoo.com/" 
    username = "_username" 
    password = "_password" 

    password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm() 
    password_mgr.add_password(None, url, username, password) 
    handler = urllib.request.HTTPBasicAuthHandler(password_mgr) 
    opener = urllib.request.build_opener(handler) 
    opener.open("http://football.fantasysports.yahoo.com/f1/leaderboard") 
    urllib.request.install_opener(opener) 

    result = urllib.request.urlopen(url) 

    print(result.read()) 


except Exception as e: 
    print(str(e)) 

但是,如何運行Java事件?

+0

我能夠得到請求發送和正確返回:)但響應頁面似乎從註銷的頁面返回數據。 :\ – mattyd

+0

你能詳細說明java事件嗎? – mattyd

+0

如何運行'jquery,Java,Ajax'命令?你需要分析所有的服務器「skeleton」來使用。外部表單,傳入數據包,數據類型,加密系統等使用瀏覽器樣式訪問,你想只爲雅虎寫一個瀏覽器? – dsgdfg