当前位置: 首页 > 知识库问答 >
问题:

JSONDecodeError与Scrapy:期望值:第1行第1列(字符0)

姚浩歌
2023-03-14

我使用请求来获取和解析使用Scrapy with Scrapyrt(实时刮取)刮取的一些数据。

我是这样做的:

#pass spider to requests parameters # 
params = {
        'spider_name': spider,
        'start_requests':True
        }
# scrape items
response = requests.get('http://scrapyrt:9080/crawl.json', params)
print ('RESPONSE JSON',response.json())
data = response.json()

根据Scrapy文档,当'start\u requests'参数设置为True时,爬行器会自动请求URL并将响应传递给解析方法,解析方法是解析请求时使用的默认方法

start_requests

类型:布尔型

可选的

spider是否应执行Scrapy.spider.start\u请求方法。在没有ScrapyRT的情况下正常运行Scrapy Spider时,默认情况下会执行start_请求,但此方法默认情况下不会在API中执行。默认情况下,我们假设spider只对参数中提供的url进行爬网,而不请求启动spider类中定义的url。start\u requests参数覆盖此行为。如果存在此参数,API将执行start\ U请求蜘蛛方法。

但是设置不起作用。日志:

[2019-05-19 06:11:14,835: DEBUG/ForkPoolWorker-4] Starting new HTTP connection (1): scrapyrt:9080
[2019-05-19 06:11:15,414: DEBUG/ForkPoolWorker-4] http://scrapyrt:9080 "GET /crawl.json?spider_name=precious_tracks&start_requests=True HTTP/1.1" 500 7784
[2019-05-19 06:11:15,472: ERROR/ForkPoolWorker-4] Task project.api.routes.background.scrape_allmusic[87dbd825-dc1c-4789-8ee0-4151e5821798] raised unexpected: JSONDecodeError('Expecting value: line 1 column 1 (char 0)',)
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/celery/app/trace.py", line 382, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/celery/app/trace.py", line 641, in __protected_call__
    return self.run(*args, **kwargs)
  File "/usr/src/app/project/api/routes/background.py", line 908, in scrape_allmusic
    print ('RESPONSE JSON',response.json())
  File "/usr/lib/python3.6/site-packages/requests/models.py", line 897, in json
    return complexjson.loads(self.text, **kwargs)
  File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

共有1个答案

邵兴庆
2023-03-14

该错误是由于Twisted19.2.0(scrapyrt依赖项)的错误造成的,该错误假定响应类型错误。

一旦我安装了Twisted==18.9.0,它就工作了。

 类似资料:
  • 问题内容: 尝试解码JSON 时出现错误。 我用于API调用的URL在浏览器中可以正常工作,但是通过curl请求完成时会出现此错误。以下是我用于curl请求的代码。 错误发生在 完整回溯: 追溯: 问题答案: 总结评论中的对话: 不需要使用库,Python作为模块包含了相同的库。 无需解码从UTF8到unicode的响应,/ 方法可以本地处理UTF8编码的数据。 有一个非常古老的API。除非您有特

  • 问题内容: 我在使用json.loads转换为dict对象时遇到麻烦,我无法弄清楚我在做什么错。我得到的确切错误是 这是我的代码: 我很确定错误发生在第二行到最后一行 但我不知道该如何解决。任何意见,将不胜感激。 问题答案: 将json字符串加载到python中,将python转储到json字符串中,例如: 所以那行是不正确的,因为您正在尝试使用python ,并期望应该有一个有效的。 因此,如果

  • 我试图获取json对象,它告诉我它需要一个值,尽管我在r.json()中定义了json的路径。还有,当我做r.headers[内容类型]时,给我文本/html;字符集=ISO-8859-1。。。谢谢大家抽出时间

  • 这是来自api的json数组数据/json对象数据,获取错误应为begin\u数组,但在第3行和第2列路径中是begin\u对象$ 这是来自api的json数组数据/json对象数据,获取错误应为begin\u数组,但在第3行和第2列路径中是begin\u对象$ 这是来自api的json数组数据/json对象数据,获取错误应为begin\u数组,但在第3行和第2列路径中是begin\u对象$ 这是

  • 问题内容: 我花了6个小时以上的时间在代码中找到异常或特殊字符,但找不到。我在这里检查了所有类似的消息。 我正在发送带有巨大弹出窗口的表单。首先,我使用内联弹出窗口打开表单,而不是将所有输入发送到main.js进行验证。 所以,我只需要一只第三只眼。 我有:,, 这是代码 形成 JS / AJAX PHP-register.php 错误消息在这里 JSON输出 Chrome控制台: Firefox

  • 问题内容: 我有这种方法: 我想解析一个JSON: 但是我收到一条错误消息: com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_OBJECT,但位于第1行第1列 问题答案: 即使没有看到您的JSON字符串,您也可以从错误消息中得知,它不是要解析为类实例的正确结构。 Gson希望您的JSON字符串