2011-07-03 50 views
1

我使用的代碼片段::Python的機械化:頁面沒有加載完全

br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 

response = br.open('http://www.facebook.com') 
br.select_form(nr=0) 
br['email'] = USERNAME 
br['pass'] = PASSWORD 
response2 = br.submit() 

assert br.viewing_html() 
time.sleep(50) 


for form in br.forms(): 
    print form 

嗯,我試着寫了response2.read()到文件,看看發生了什麼事。只有頂部導航欄已加載。 time.sleep(50)的意圖是爲頁面加載提供時間,但猜測不起作用。

這樣做的正確方法是什麼?

+0

您是否嘗試過使用FB API? – infrared

+0

我知道這可以使用fb api來完成,但是我想嘗試使用機械化 –

回答

0

你確定你傳遞了正確的登錄名嗎?

我用我的登錄運行你的代碼,它對我來說工作正常。

我要補充的唯一的事情就是你不需要在那裏有time.sleep(50)-Mechanize塊,直到它接收到所有的內容。

請給予我們您的完整代碼示例輸出(包括print response2)你的問題更加有用。

+0

所以一旦登錄 - 注意fb使用ajax加載其內容 - 機械化不能夠查看共享框或其他任何其他內容比頂部導航欄 –

+0

* Facebook使用Ajax *加載其內容 - 如果您有JavaScript,是的。我們沒有。你有沒有嘗試改變你的UA?告訴Facebook你是Firefox會讓它認爲你是Firefox。將其更改爲非瀏覽器 –

0

你不應該刮www.facebook.com。

正確的方法是使用Facebook平臺作爲@infrared筆記。

+0

那麼這個問題對於所有使用ajax並且使用機械化的站點來說都是普遍的。我已經使用fb api,但只是嘗試可能。 –

+0

Mechanize沒有JavaScript解釋器,但它不會運行JS或Ajax –