【发布时间】:2018-02-18 23:46:54
【问题描述】:
我正在尝试从关注 Twitter 的 urllib.request 对象中提取 JSON 代码。我这样做是出于好奇,也因为我试图确定使用 Scrappy 请求什么,以便编写绕过 twitter 无限滚动并允许我将所有推文拉出用户时间轴的代码。
(我知道有些软件包已经这样做了,但我想自己设置它以边做边学:))
我一直在使用urllib 包来获取请求数据,但是,当我尝试它时遇到了一个令人沮丧的错误:
import json
import urllib
with urllib.request.urlopen("https://twitter.com/vonkraush") as url:
data = url.read().decode()
print(json.loads(data))
Traceback (most recent call last):
File "<ipython-input-30-208336effb36>", line 1, in <module>
json.loads(data)
File "C:\Users\Josh\Anaconda3\lib\json\__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "C:\Users\Josh\Anaconda3\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\Josh\Anaconda3\lib\json\decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
JSONDecodeError: Expecting value
我已经尝试将'utf-8' 明确传递到解码和其他一些方法中,但到目前为止还没有任何东西可以让我绕过这个错误。我做错了什么,我该如何解决?
【问题讨论】:
-
data是 HTML 文档,而不是 JSON 对象。您不能将其传递给json.loads()。 -
奇怪,我看到其他人在堆栈交换中提出了完全相同的代码块:stackoverflow.com/questions/12965203/… 那我应该怎么做呢?
-
如果该页面中有任何JSON,您必须从页面中提取它,然后调用
json.loads()。 -
知道了,那你建议如何提取它?
标签: python json twitter request