2016-06-24 51 views
0

我学习BeautifulSoup,我遇到了这个我可以绑定read()函数来在python中输入'instance'吗?

from bs4 import BeautifulSoup 
import urllib2 

url = "https://en.wikipedia.org/wiki/Katy_Perry" 
open_url = urllib2.urlopen(url) 
read = open_url.read() 
print(read) 

这将打印页面的HTML代码。但是我们如何在这里使用read()呢?它是一个FileIO函数,应该和文件对象一起使用。但这里的变量“open_url”不是一个文件对象。

print(type(open_url)) 

输出:

<type 'instance'> 

显然 “open_url” 不是一个文件对象,那么是什么使我们能够结合阅读()为 “open_url”?

+0

的可能的复制[?是什么旧式和Python中的新样式类的区别(http://stackoverflow.com/questions/54867/what-is-the-difference旧式样式和新式样在python) –

+0

'open'是一个对象的实例,这意味着它几乎可以包含所有绑定到它的东西(属性和方法)。注意:将你的变量重命名为'open()'是一个内建函数。 – Cyrbil

回答

0

如果打印两个open_url你会看到fp = socket._fileobject ..

<addinfourl at 139707791457312 whose fp = <socket._fileobject object at 0x7f104303bd50>> 

所以你看到的文件对象实际上是一个socket._fileobject您可以与open_url.fp访问:如果除去第一

<socket._fileobject object at 0x7f104303bd50> 

读通话你会看到你可以访问socket对象并直接调用.read,那就是当你拨打open_url.read()等:

open_url.fp.read() 
相关问题