我Expecting value: line 1 column 1 (char 0)在尝试解码JSON 时遇到错误.
我用于API调用的URL在浏览器中工作正常,但在通过curl请求完成时会出现此错误.以下是我用于curl请求的代码.
错误发生在 return simplejson.loads(response_json)
response_json = self.web_fetch(url)
response_json = response_json.decode('utf-8')
return json.loads(response_json)
def web_fetch(self, url):
buffer = StringIO()
curl = pycurl.Curl()
curl.setopt(curl.URL, url)
curl.setopt(curl.TIMEOUT, self.timeout)
curl.setopt(curl.WRITEFUNCTION, buffer.write)
curl.perform()
curl.close()
response = buffer.getvalue().strip()
return response
Run Code Online (Sandbox Code Playgroud)
完全追溯:
追溯:
File "/Users/nab/Desktop/myenv2/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/Users/nab/Desktop/pricestore/pricemodels/views.py" in view_category
620. apicall=api.API().search_parts(category_id= str(categoryofpart.api_id), manufacturer = manufacturer, filter = filters, start=(catpage-1)*20, limit=20, sort_by='[["mpn","asc"]]')
File "/Users/nab/Desktop/pricestore/pricemodels/api.py" in search_parts
176. return simplejson.loads(response_json) …Run Code Online (Sandbox Code Playgroud) 我正在使用
data=urllib2.urlopen(url).read()
Run Code Online (Sandbox Code Playgroud)
我想知道:
如何判断URL中的数据是否被gzip压缩?
如果数据被压缩,urllib2会自动解压缩数据吗?数据总是一个字符串吗?
我目前使用mechanize来读取gzip压缩的网页,如下所示:
br = mechanize.Browser()
br.set_handle_gzip(True)
response = br.open(url)
data = response.read()
Run Code Online (Sandbox Code Playgroud)
我想知道如何将urllib2提取的gzip压缩数据解压缩为HTML文本?
req = urllib2.Request(url)
opener = urllib2.build_opener()
response = opener.open(req)
data = response.read()
if response.info()['content-encoding'] == 'gzip':
HOW TO DECOMPRESS DATA TO HTML
Run Code Online (Sandbox Code Playgroud) 我将使用wikitionary转储来进行POS标记.不知何故,它在下载时卡住了.这是我的代码:
import nltk
from urllib import urlopen
from collections import Counter
import gzip
url = 'http://dumps.wikimedia.org/enwiktionary/latest/enwiktionary-latest-all-titles-in-ns0.gz'
fStream = gzip.open(urlopen(url).read(), 'rb')
dictFile = fStream.read()
fStream.close()
text = nltk.Text(word.lower() for word in dictFile())
tokens = nltk.word_tokenize(text)
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Traceback (most recent call last):
File "~/dir1/dir1/wikt.py", line 15, in <module>
fStream = gzip.open(urlopen(url).read(), 'rb')
File "/usr/lib/python2.7/gzip.py", line 34, in open
return GzipFile(filename, mode, compresslevel)
File "/usr/lib/python2.7/gzip.py", line 89, in __init__
fileobj = self.myfileobj = __builtin__.open(filename, mode or 'rb')
TypeError: file() argument 1 must be …Run Code Online (Sandbox Code Playgroud)