2017-07-07 119 views
1

我有一個Python 2的腳本,用於登錄到網頁,然後向內移動以訪問指向同一網站但指向不同頁面的幾個文件。 Python 2讓我用我的憑證打開網站,然後創建一個opener.open()以保持可用的連接導航到其他頁面。登錄一個網站並瀏覽另一個頁面

下面是在Python 2工作代碼:

$Your admin login and password 
LOGIN = "*******" 
PASSWORD = "********" 
ROOT = "https:*********" 

#The client have to take care of the cookies. 
jar = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar)) 

#POST login query on '/login_handler' (post data are: 'login' and 'password'). 
req = urllib2.Request(ROOT + "/login_handler", 
         urllib.urlencode({'login': LOGIN, 
             'password': PASSWORD})) 
opener.open(rep) 

#Set the right accountcode 

for accountcode, queues in QUEUES.items(): 
    req = urllib2.Request(ROOT + "/switch_to" + accountcode) 
    opener.open(req) 

我需要做在Python 3我與請求模塊和urllib的嘗試同樣的事情,但我雖然可以建立在第一次登錄,我不知道如何保持開啓者瀏覽網站。我找到了OpenerDirector,但似乎我不知道該怎麼做,因爲我還沒有達到我的目標。

我已經使用這個Python 3代碼來獲得所需的結果,但不幸的是我無法獲得csv文件來打印它。 enter image description here

+0

請出示你的Python 3代碼和錯誤你 –

回答

0

問題:我不知道如何保持開啓器瀏覽網站。

的Python 3.6»文檔urllib.request.build_opener

使用基本的HTTP認證:

import urllib.request 
# Create an OpenerDirector with support for Basic HTTP Authentication... 
auth_handler = urllib.request.HTTPBasicAuthHandler() 
auth_handler.add_password(realm='PDQ Application', 
         uri='https://mahler:8092/site-updates.py', 
         user='klem', 
         passwd='kadidd!ehopper') 

opener = urllib.request.build_opener(auth_handler) 

# ...and install it globally so it can be used with urlopen. 
urllib.request.install_opener(opener) 
f = urllib.request.urlopen('http://www.example.com/login.html') 
csv_content = f.read() 
+0

我的問題是因爲我必須在繼續瀏覽該網站使用的用戶名和密碼,然後日誌後(這就是爲什麼揭幕戰)和然後下載文件。 –

+0

檢查我的評論如下.. –

+0

_ **它沒有工作** _沒有幫助,檢查響應錯誤或代碼你。你是否已經認識到登錄成功了? **請**不要使用「答案」作爲您的評論,相應地編輯您的問題。 **請不要使用圖片[編輯]您的問題添加您當前的'Python3'。 – stovfl

0

使用Python請求庫爲Python 3和會話。 http://docs.python-requests.org/en/master/user/advanced/#session-objects

一旦你登錄你的會話將被自動管理。你不需要創建你自己的餅乾罐。以下是示例代碼。

s = requests.Session() 
auth={"login":LOGIN,"pass":PASS} 
url=ROOT+/login_handler 
r=s.post(url, data=auth) 
print(r.status_code) 
for accountcode, queues in QUEUES.items(): 
    req = s.get(ROOT + "/switch_to" + accountcode) 
    print(req.text) #response text 
+0

不幸的是,它也沒有工作,我開始閱讀之前無法完成所需的登錄。 –

+0

您是否適當地更改了參數?用戶名和密碼。 – specialscope

+0

是的,我做了,但看起來我無法完成認證。密碼和用戶都可以,因爲每次我嘗試用我的瀏覽器工作 –

相關問題