使用python抓取instagram时出现ValueError

使用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

您好,我正在尝试删除此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) 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
模块,所以我不知道为什么会出现错误。