2012-05-29 112 views
0

我叫下面的代碼訪問的URL,並試圖打印頁面上的內容:我不知道如果URL訪問無處不Python-超時讀取URL時

import urllib2 
f = urllib2.urlopen("https://www.reaxys.com/reaxys/secured/customset.do?performed=true&action=get_preparations&searchParam=1287039&workflowId=1338317532514&workflowStep=1&clientDateTime=2012-05-29%2015:17") 
page = f.read() 
print page 
f.close() 

,所以每個人都無法訪問該網頁上的內容。

此頁面設置用戶可以停留在頁面上的時間限制,在此之後,彈出窗口顯示用戶已達到超時時間。

下面是我碰到的問題: 當我在瀏覽器中輸入網址時,一切都打開了。但是,當我嘗試打印Python從該頁面讀取的內容時,Python會讀取僅在頁面達到超時時彈出的頁面。

我不知道什麼是錯,是Python還是網站?我如何讓Python讀取該頁面上的實際內容?

在此先感謝。

回答

1

它似乎與網站設置的cookie有關。如果我訪問的網址是

https://www.reaxys.com/reaxys/secured/customset.do?performed=true&action=get_preparations&searchParam=1287039&workflowId=1338317532514&workflowStep=1 

在我的瀏覽器中,我得到相同的超時錯誤。如果我刷新,網站加載正常。但是,如果我從網站清除我的Cookie並重試,我又會收到超時。所以,我懷疑該網站是執行一些過程,添加一個時間戳,並在頁面可見之前檢查它,並且如果由於某種原因不能設置cookie,則默認爲超時(如將訪問在Python腳本中)。

我會建議對cookies進行深入調查(從該頁面上的Javascript開始,這似乎是處理某些超時邏輯),然後嘗試根據每次抓取過程設置Cookie :http://www.testingreflections.com/node/view/5919,http://stockrt.github.com/p/emulating-a-browser-in-python-with-mechanize/等。

(這絕不是爲了容忍Elsevier網站的刮蹭,因爲他們可能會追隨你並且吃掉你的年輕人:))