使用python抓取instagram时出现ValueError
您好,我正在尝试删除此url:使用python抓取instagram时出现ValueError,python,web-scraping,instagram,Python,Web Scraping,Instagram,您好,我正在尝试删除此url:https://www.instagram.com/cristiano/?__a=1但我得到一个值错误 url_user = "https://www.instagram.com/cristiano/?__a=1" headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Ch
https://www.instagram.com/cristiano/?__a=1
但我得到一个值错误
url_user = "https://www.instagram.com/cristiano/?__a=1"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'}
response = get(url_user,headers=headers)
print(response) # 200
html_soup = BeautifulSoup(response.content, 'html.parser')
# print(html_soup)
jsondata=json.loads(str(html_soup))
ValueError:无法解码任何JSON对象
你知道我为什么会出现这个错误吗?你之所以会出现这个错误,是因为你试图像解析HTML一样解析JSON响应。你不需要漂亮的鞋子 试试这个:
import json
import requests
url_user = "https://www.instagram.com/cristiano/?__a=1"
d = json.loads(requests.get(url_user).text)
print(d)
但是,最佳实践建议使用来自请求的.json()
,因为它可以更好地确定所使用的编码
import requests
url_user = "https://www.instagram.com/cristiano/?__a=1"
d = requests.get(url_user).json()
print(d)
您可能会得到非200,这意味着服务器响应错误,例如,服务器可能已禁止频繁请求您的IP<代码>请求
库不会为此抛出任何错误。要控制错误的状态代码,请在get(…)
行此代码后插入:
response.raise_for_status()
而且只要做jsondata=response.json()
,就足够了<代码>请求库可以通过这种方式解析json,而不需要漂亮的汤。关于主要请求库功能的易于阅读的教程是
此外,如果存在解析问题,请将响应的二进制内容保存到文件,以便将其附加到问题,如下所示:
with open('response.dat', 'wb') as f:
f.write(response.content)
无法重现错误。为什么不干脆
json_data=response.json()
?除了我之前的评论之外,我也无法重现错误。打印response.text
以便查看您真正得到的信息。第二段代码告诉我这个错误:simplejson.errors.JSONDecodeError:Expecting value:line 1 column 1(char 0)@userHG第二段代码中没有json
模块,所以我不知道为什么会出现错误。