2017-02-23 31 views
0

我很努力地找到一種方式來讀取數據從網頁(代碼中的URL)完全加載並登錄到網站(代碼中的LOGIN_URL)後的數據。目前,我的代碼中的打印語句顯示網頁在加載時的數據;如何在網頁加載完成後獲取數據?蟒蛇3完全加載後讀取認證網頁

代碼:

login_url='LOGIN_URL' 
    s=requests.session() 
    username = input("Please enter your username: ") 
    password=getpass.getpass("Please enter your password: ") 
    data={"username" : username,"password" :password} 
    content=s.post(login_url,data=data) 
    url='PAGE_TO_NAVIGATE_TO_AFTER_LOGIN' 
    data = s.get(url) 
    time.sleep(10) 
    print(data.text) 

任何建議/幫助將不勝感激 - 我是相當新到Python(3)。

+0

「完全加載」是什麼意思?我確信您的打印是在頁面實際完全加載後發生的,但您的程序不是完整的Web瀏覽器,因此您的程序不會檢索該頁面引用的其他資源(CSS,圖像,腳本),也不會執行Web瀏覽器執行的任何動態行爲(即JavaScript執行)。 – dsh

+0

檢索到的網頁將顯示一條消息,說明它仍在加載數據 - 我想在加載完所有內容後保存該網頁。那麼如何從網頁獲取所有其他資源? – user7611666

+0

簡單的答案是實現整套規範......您需要解析HTML並處理它......您需要創建一個完整的Web瀏覽器。通過採用完全不同的方法,並使用硒來驅動現有的瀏覽器,您可以更好地服務於Max Paymar在他的回答中所提出的建議。 – dsh

回答

0

您可能需要使用webdriver。它是一種像瀏覽器一樣的軟件,您可以像普通用戶一樣使用它來瀏覽網頁。我以前用selenium's expected conditions來解決你的問題。您可以告訴硒等待某個元素被加載以獲取html。因此,只有在使用瀏覽器的開發人員工具手動完成加載頁面時,才需要查找出現的元素。一旦你找到它,你可以告訴硒等待那個元素。

+0

好的。感謝您的鏈接,我將閱讀並查看使用webdriver是否解決我的問題。 – user7611666

+0

如果有效,請接受我的回答:D –

+0

看起來我不能使用此解決方案,因爲我無法在不通過IT的情況下修改系統路徑。還有其他建議嗎? – user7611666