Skip to content

ef.stock.get_realtime_quotes()失效 #225

Description

@huaicoding

求助大佬们有无解决方案!!


JSONDecodeError Traceback (most recent call last)
File /opt/conda/envs/xlfh/lib/python3.10/site-packages/requests/models.py:974, in Response.json(self, **kwargs)
973 try:
--> 974 return complexjson.loads(self.text, **kwargs)
975 except JSONDecodeError as e:
976 # Catch JSON-related errors and raise as requests.JSONDecodeError
977 # This aliases json.JSONDecodeError and simplejson.JSONDecodeError

File /opt/conda/envs/xlfh/lib/python3.10/json/init.py:346, in loads(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
343 if (cls is None and object_hook is None and
344 parse_int is None and parse_float is None and
345 parse_constant is None and object_pairs_hook is None and not kw):
--> 346 return _default_decoder.decode(s)
347 if cls is None:

File /opt/conda/envs/xlfh/lib/python3.10/json/decoder.py:337, in JSONDecoder.decode(self, s, _w)
333 """Return the Python representation of s (a str instance
334 containing a JSON document).
335
336 """
--> 337 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
338 end = _w(s, end).end()

File /opt/conda/envs/xlfh/lib/python3.10/json/decoder.py:355, in JSONDecoder.raw_decode(self, s, idx)
354 except StopIteration as err:
--> 355 raise JSONDecodeError("Expecting value", s, err.value) from None
356 return obj, end

JSONDecodeError: Expecting value: line 2 column 1 (char 1)

During handling of the above exception, another exception occurred:

JSONDecodeError Traceback (most recent call last)
Cell In[18], line 1
----> 1 ef.stock.get_realtime_quotes()

File /opt/conda/envs/xlfh/lib/python3.10/site-packages/efinance/utils/init.py:336, in process_dataframe_and_series..decorator..wrapper(*args, **kwargs)
334 @wraps(func)
335 def wrapper(*args, **kwargs):
--> 336 values = func(*args, **kwargs)
337 if isinstance(values, pd.DataFrame):
338 for column, function_name in function_fields.items():

File /opt/conda/envs/xlfh/lib/python3.10/site-packages/efinance/utils/init.py:48, in to_numeric..run(*args, **kwargs)
46 @wraps(func)
47 def run(*args, **kwargs):
---> 48 values = func(*args, **kwargs)
49 if isinstance(values, pd.DataFrame):
50 for column in values.columns:

File /opt/conda/envs/xlfh/lib/python3.10/site-packages/efinance/stock/getter.py:433, in get_realtime_quotes(fs, **kwargs)
431 fs_list.append(FS_DICT["stock"])
432 fs_str = ",".join(fs_list)
--> 433 df = get_realtime_quotes_by_fs(fs_str, **kwargs)
434 df.rename(columns={"代码": "股票代码", "名称": "股票名称"}, inplace=True)
436 return df

File /opt/conda/envs/xlfh/lib/python3.10/site-packages/efinance/utils/init.py:48, in to_numeric..run(*args, **kwargs)
46 @wraps(func)
47 def run(*args, **kwargs):
---> 48 values = func(*args, **kwargs)
49 if isinstance(values, pd.DataFrame):
50 for column in values.columns:

File /opt/conda/envs/xlfh/lib/python3.10/site-packages/efinance/common/getter.py:79, in get_realtime_quotes_by_fs(fs, **kwargs)
77 with ThreadPoolExecutor() as executor:
78 tasks = executor.map(get_by_page, range(1, pages + 1), [pz] * pages)
---> 79 responses = list(tasks)
81 dfs = [
82 pd.DataFrame(response["data"]["diff"])[list(columns.keys())]
83 for response in responses
84 ]
85 df = (
86 pd.concat(dfs, axis=0, ignore_index=True)
87 .rename(columns=columns)[columns.values()]
(...)
93 )
94 )

File /opt/conda/envs/xlfh/lib/python3.10/concurrent/futures/_base.py:621, in Executor.map..result_iterator()
618 while fs:
619 # Careful not to keep a reference to the popped future
620 if timeout is None:
--> 621 yield _result_or_cancel(fs.pop())
622 else:
623 yield _result_or_cancel(fs.pop(), end_time - time.monotonic())

File /opt/conda/envs/xlfh/lib/python3.10/concurrent/futures/_base.py:319, in _result_or_cancel(failed resolving arguments)
317 try:
318 try:
--> 319 return fut.result(timeout)
320 finally:
321 fut.cancel()

File /opt/conda/envs/xlfh/lib/python3.10/concurrent/futures/_base.py:451, in Future.result(self, timeout)
449 raise CancelledError()
450 elif self._state == FINISHED:
--> 451 return self.__get_result()
453 self._condition.wait(timeout)
455 if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]:

File /opt/conda/envs/xlfh/lib/python3.10/concurrent/futures/_base.py:403, in Future.__get_result(self)
401 if self._exception:
402 try:
--> 403 raise self._exception
404 finally:
405 # Break a reference cycle with the exception in self._exception
406 self = None

File /opt/conda/envs/xlfh/lib/python3.10/concurrent/futures/thread.py:58, in _WorkItem.run(self)
55 return
57 try:
---> 58 result = self.fn(*self.args, **self.kwargs)
59 except BaseException as exc:
60 self.future.set_exception(exc)

File /opt/conda/envs/xlfh/lib/python3.10/site-packages/efinance/common/getter.py:57, in get_realtime_quotes_by_fs..get_by_page(pn, pz)
42 params = (
43 ("pn", pn),
44 ("pz", pz),
(...)
52 ("fields", fields),
53 )
54 url = "http://push2.eastmoney.com/api/qt/clist/get"
55 json_response = session.get(
56 url, headers=EASTMONEY_REQUEST_HEADERS, params=params
---> 57 ).json()
58 return json_response

File /opt/conda/envs/xlfh/lib/python3.10/site-packages/requests/models.py:978, in Response.json(self, **kwargs)
974 return complexjson.loads(self.text, **kwargs)
975 except JSONDecodeError as e:
976 # Catch JSON-related errors and raise as requests.JSONDecodeError
977 # This aliases json.JSONDecodeError and simplejson.JSONDecodeError
--> 978 raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)

JSONDecodeError: Expecting value: line 2 column 1 (char 1)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions