【发布时间】:2014-02-19 04:58:35
【问题描述】:
我对 Python 和 Scrapy 还很陌生,但已经能够进行一些基本的网络抓取。但是,我在导入 JSON 数据时遇到问题。我已经在代码之后发布了回溯。
这是我正在使用的代码。
from scrapy.spider import Spider
import json
class myspider(Spider):
name = "jsontest"
allowed_domains = ["data.sportsillustrated.cnn.com"]
start_urls = ['http://data.sportsillustrated.cnn.com/jsonp/basketball/nba/gameflash/2012/11/20/32128_playbyplay.json']
def parse(self, response):
jsonresponse = json.loads(response.body_as_unicode())
print jsonresponse
Traceback(最近一次调用最后一次): 文件“C:\Python27\lib\site-packages\twisted\internet\base.py”,第 1201 行,在 mainLoop self.runUntilCurrent() 文件“C:\Python27\lib\site-packages\twisted\internet\base.py”,第 824 行,在 runUntilCurrent call.func(*call.args, **call.kw) 回调中的文件“C:\Python27\lib\site-packages\twisted\internet\defer.py”,第 382 行 self._startRunCallbacks(结果) _startRunCallbacks 中的文件“C:\Python27\lib\site-packages\twisted\internet\defer.py”,第 490 行 self._runCallbacks() --- --- _runCallbacks 中的文件“C:\Python27\lib\site-packages\twisted\internet\defer.py”,第 577 行 current.result = callback(current.result, *args, **kw) 解析中的文件“jsontest\spiders\jsontest.py”,第 10 行 jsonresponse = json.loads(response.body_as_unicode()) 文件“C:\Python27\lib\json__init__.py”,第 338 行,加载中 返回 _default_decoder.decode(s) 解码中的文件“C:\Python27\lib\json\decoder.py”,第 365 行 obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 文件“C:\Python27\lib\json\decoder.py”,第 383 行,在 raw_decode raise ValueError("没有 JSON 对象可以被解码") exceptions.ValueError: 无法解码 JSON 对象
【问题讨论】:
-
你能告诉我们完整的追溯吗?
-
运行
curl --head http://data.sportsillustrated.cnn.com返回 403。在浏览器中单击链接会返回一个空白页面,所以我认为这不是用户代理问题。您可能需要调整参数。 -
我已添加回溯。如果您转到 url,您会注意到 JSON 被包装在 callbackWrapper 中。这会导致我的问题吗?