蟒;urllib 错误:属性错误:"字节"对象没有属性"读取"



注意:这是Python 3,没有urllib2。此外,我尝试过使用json.loads(),得到了以下错误:

TypeError: can't use a string pattern on a bytes-like object

如果我使用json.loads()并从响应中删除.read(),则会出现此错误:

TypeError: expected string or buffer

>

import urllib.request
import json
response = urllib.request.urlopen('http://www.reddit.com/r/all/top/.json').read()
jsonResponse = json.load(response)
for child in jsonResponse['data']['children']:
    print (child['data']['title'])

不起作用。。。我不知道为什么。

试试这个:

jsonResponse = json.loads(response.decode('utf-8'))

使用json.loads而不是json.load

load从类似文件的对象加载,loads从字符串加载。因此,您还可以省略.read()调用。)

我还不熟悉python 3,但似乎urllib.request.urlopen().read()返回的是byte对象而不是字符串。

您可以尝试将其输入到StringIO对象中,甚至可以执行str(response)

我在python3中得到了相同的错误{AttributeError: 'bytes' object has no attribute 'read'}。这在后来不使用json:的情况下对我有效

from urllib.request import urlopen
from bs4 import BeautifulSoup
url = 'https://someurl/'
page = urlopen(url)
html = page.read()
soup = BeautifulSoup(html)
print(soup.prettify('latin-1'))

相关内容

  • 没有找到相关文章

最新更新