我可以绑定 read() 函数以在 python 中键入 'instance' 吗?
Can I bind read() function to type 'instance' in python?
我正在学习 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" 成为可能?
如果你同时打印 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,这就是您调用 [=17 时发生的情况=] 等..:[=18=]
open_url.fp.read()
我正在学习 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" 成为可能?
如果你同时打印 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,这就是您调用 [=17 时发生的情况=] 等..:[=18=]
open_url.fp.read()