我正在学习BeautifulSoup,我遇到了这个
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”不是文件对象,那么是什么才能将read()绑定到“open_url”?
答案 0 :(得分: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>
如果删除第一个读取调用,您将看到可以访问套接字对象并直接调用 .read ,这就是调用open_url.read()
等时发生的情况。 :
open_url.fp.read()