JSONDecodeError: Expecting value: line 1 column 1 (char 0) when scaping SEC EDGAR
JSONDecodeError: Expecting value: line 1 column 1 (char 0) when scaping SEC EDGAR
我的代码如下:
import requests
import urllib
from bs4 import BeautifulSoup
year_url = r"https://www.sec.gov/Archives/edgar/daily-index/2020/index.json"
year_content = requests.get(year_url)
decoded_year_url = year_content.json()
去年我可以 运行 完全相同的代码,但是当我昨天 运行 它时,警告弹出:
“JSONDecodeError:期望值:第 1 行第 1 列(字符 0)”
为什么?我应该如何解决这个问题?非常感谢!
显然,根据 2021 年 5 月 GitHub issue,SEC 已将 rate-limiting 添加到他们的网站。您收到错误消息的原因是响应包含 HTML,而不是 JSON,这会导致 requests
在调用 .json()
.
时引发错误
要解决此问题,您需要将 User-agent
header 添加到您的请求中。我可以通过以下方式访问 JSON:
import requests
import urllib
from bs4 import BeautifulSoup
year_url = r"https://www.sec.gov/Archives/edgar/daily-index/2020/index.json"
year_content = requests.get(year_url, headers={'User-agent': '[specify user agent here]'})
decoded_year_url = year_content.json()
尝试导入 json 模块并使用方法 json.loads()
import requests
import urllib
from bs4 import BeautifulSoup
import json
year_url = r"https://www.sec.gov/Archives/edgar/daily-index/2020/index.json"
year_content = requests.get(year_url)
decoded_year_url = json.loads(year_content)
我的代码如下:
import requests
import urllib
from bs4 import BeautifulSoup
year_url = r"https://www.sec.gov/Archives/edgar/daily-index/2020/index.json"
year_content = requests.get(year_url)
decoded_year_url = year_content.json()
去年我可以 运行 完全相同的代码,但是当我昨天 运行 它时,警告弹出: “JSONDecodeError:期望值:第 1 行第 1 列(字符 0)” 为什么?我应该如何解决这个问题?非常感谢!
显然,根据 2021 年 5 月 GitHub issue,SEC 已将 rate-limiting 添加到他们的网站。您收到错误消息的原因是响应包含 HTML,而不是 JSON,这会导致 requests
在调用 .json()
.
要解决此问题,您需要将 User-agent
header 添加到您的请求中。我可以通过以下方式访问 JSON:
import requests
import urllib
from bs4 import BeautifulSoup
year_url = r"https://www.sec.gov/Archives/edgar/daily-index/2020/index.json"
year_content = requests.get(year_url, headers={'User-agent': '[specify user agent here]'})
decoded_year_url = year_content.json()
尝试导入 json 模块并使用方法 json.loads()
import requests
import urllib
from bs4 import BeautifulSoup
import json
year_url = r"https://www.sec.gov/Archives/edgar/daily-index/2020/index.json"
year_content = requests.get(year_url)
decoded_year_url = json.loads(year_content)