我重新检查了我的代码,并查看了打开 URL 以将 Web 数据传递到 Beautiful Soup 的类似操作,由于某种原因,我的代码虽然格式正确,但没有返回任何内容:
>>> from bs4 import BeautifulSoup
>>> from urllib3 import poolmanager
>>> connectBuilder = poolmanager.PoolManager()
>>> content = connectBuilder.urlopen('GET', 'http://www.crummy.com/software/BeautifulSoup/')
>>> content
<urllib3.response.HTTPResponse object at 0x00000000032EC390>
>>> soup = BeautifulSoup(content)
>>> soup.title
>>> soup.title.name
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'name'
>>> soup.p
>>> soup.get_text()
''
>>> content.data
a stream of data follows...
如图所示,很明显 urlopen() 返回了一个被变量 content 捕获的 HTTP 响应,它可以读取响应的状态是有道理的,但是在它被传递到 Beautiful Soup 之后,Web 数据没有得到转换变成一个美丽的汤对象(变量汤)。您可以看到我尝试读取一些标签和文本,get_text() 返回一个空列表,这很奇怪。
奇怪的是,当我通过 content.data 访问网络数据时,数据会显示出来,但它没有用,因为我不能使用 Beautiful Soup 来解析它。我的问题是什么?谢谢。