首页 > 解决方案 > 通过 python 获取谷歌图像。JSON 对象必须是 str 问题

问题描述

我正在尝试通过 python 获取一些谷歌图像,但是当我尝试从服务器读取 json 响应时,我收到一个错误,告诉我对象必须是 str 而不是字节。
事实上,我试图通过解码(utf-8)将服务器的响应转换为str来解决这个问题。我收到另一个错误,告诉我“期望值:第 1 行第 1 列(字符 0)” 这是我所做
的 1。我在 google 上搜索 BLACK SHIRTS 并单击了图像规则。我复制了网址。
2. 我创建标头,通知用户代理是 chrome(为了在向服务器发送请求时不会被阻止)
3. 我创建一个请求
4. 我阅读了请求
5.当我尝试加载它时,我遇到了上面提到的问题。所以我试图解码第 4 步的输出(通过添加这个 .decode('utf-8')

这是我使用的代码

import os
import urllib.request as ulib
import urllib.parse
import json


headers = {'User-Agent': 'Chrome/41.0.2228.0 Safari/537.36'} 
url = 'https://www.google.com/search?q=BLACK+SHIRTS&source=lnms&tbm=isch&sa=X&ved=0ahUKEwiS2NPpxPbbAhWlMewKHSpiC9IQ_AUICygC&biw=1600&bih=794' ## this is the url when i searched
request = ulib.Request(url, None, headers)
json_string = ulib.urlopen(request).read()
json_string=json_string.decode('utf-8')
page = json.loads(json_string)

PS:从第 4 步中删除.decode('utf-8')(与最后一行匹配)

标签: pythonjsonurllib

解决方案


您需要使用 Beautiful Soup https://www.crummy.com/software/BeautifulSoup/之类的包解析 HTML 响应吗?


推荐阅读