【问题标题】:Can I bind read() function to type 'instance' in python?我可以将 read() 函数绑定到在 python 中键入“实例”吗?
【发布时间】:2016-06-24 08:14:43
【问题描述】:

我正在学习 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" 成为可能?

【问题讨论】:

标签: python web-scraping beautifulsoup urllib2


【解决方案1】:

如果您同时打印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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    相关资源
    最近更新 更多