2011-11-25 41 views
2

我在Python中使用urllib和urllib2來打開和閱讀網頁,但有時,我得到的文本是不可讀的。例如,如果我運行此:爲什麼從頁面檢索的文本有時看起來像是亂碼?

import urllib 

text = urllib.urlopen('http://tagger.steve.museum/steve/object/141913').read() 
print text 

我得到一些不可讀的文本。我看過這些帖子:

Gibberish from urlopen

Does python urllib2 automatically uncompress gzip data fetched from webpage?

,但似乎無法找到我的答案。

非常感謝您的幫助!


UPDATE:我通過固定「可信」服務器的問題,我的用戶代理是一個布勞爾而不是爬行。

import urllib 

class NewOpener(urllib.FancyURLopener): 
    version = 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.10 Chromium/15.0.874.120 Chrome/15.0.874.120 Safari/535.2' 

nop = NewOpener() 
html_text = nop.open('http://tagger.steve.museum/steve/object/141913').read() 

謝謝大家的回覆。

+0

urlopen(youUrl)的結果是Javascript。這個腳本真的是你想要得到的內容,還是想獲得網頁的實際內容(顯示瀏覽器的內容)? –

回答

1

您可以使用Selenium來獲得內容。下載服務器和客戶端驅動程序,運行服務器並運行:

from selenium import selenium 
s = selenium("localhost", 4444, "*chrome", "http://tagger.steve.museum") 
s.start() 

s.open("/steve/object/141913") 

text = s.get_html_source() 
print text 
+0

謝謝joshz!事實證明,我將需要硒,因爲我需要執行JavaScript之前,我可以查看頁面源的方式,你可以在瀏覽器中看到它。一個簡單的問題:如果我在交互式Python解釋器上運行上面的腳本,它會很好。但是,如果我將它存儲在一個文件中並一起運行,它會發現語法錯誤!你有什麼想法可能會造成這種情況? – Thea

+0

不是真的不知道它是什麼錯誤,我使用Python 2.7.2從一個文件運行它。我最好的猜測是從文件中運行不同的Python版本。 –

+0

它神奇地固定本身!我不知道是什麼導致了這個問題!感謝您的建議! – Thea

2

這個亂碼是對'http://tagger.steve.museum/steve/object/141913'的請求的真實服務器響應。實際上,它看起來像混淆了JavaScript,如果它由瀏覽器執行,則加載頁面內容。

要獲取此內容,您需要執行此JavaScript,這在Python中可能是一項非常困難的任務。如果你仍然想這樣做,看看pywebkitgtk

相關問題