2012-08-17 96 views
0

我正在學習Python,我來自Java/C++和C背景。我通常喜歡在調試器中「檢查」「對象」以更好地理解發生了什麼,所以請原諒我的問題,如果python看起來很奇怪。如何檢查Python中的urllib2對象?

我正在閱讀Python網站上的urllib2文檔。下面的例子顯示出:

>>> import urllib2 
>>> for line in urllib2.urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl'): 
...  if 'EST' in line or 'EDT' in line: # look for Eastern Time 
...   print line 

我明白urlopen會下載頁面的內容。

請問urlopen下載HTML內容?我試着做以下事情:

content = urllib2.urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl') 
print content 

它產生一個對象。這個對象的性質是什麼?它是一個類似字典的對象嗎?如果是這樣,我如何檢查它的關鍵值是什麼?這是否使用Python中的pickling來完成?

我知道geturl()方法,但我想完全理解urlopen()做什麼並返回。

謝謝!

回答

0

是的,你可以使用打印的內容:

print content.read() 

還,我想建議IPython的,所以你可以檢查對象的方法和屬性很容易:

dir(content) 
1
import pdb 
pdb.set_trace() 

將它放置在源代碼中的任意位置,就像斷點 - 它允許您交互地檢查名稱和對象。一旦你的,你也可以使用

import inspect 

裏面有多個選項用於檢查對象http://docs.python.org/library/inspect.html#module-inspect

dir(my_object)的屬性和方法是做同樣的事情的廉價方式

1

the documentation

這個函數返回一個類文件對象有兩個方法:...

因此,您可以像讀取文件一樣閱讀它(就像您已經這樣做了)。

+0

所以'打開文件,並閱讀每一行? – darksky 2012-08-17 16:03:37

+0

文件類對象的行爲類似於[文件對象](http://docs.python.org/library/stdtypes.html#file-objects)。 – 2012-08-17 16:09:33