Metadata-Version: 2.1
Name: pywencai
Version: 0.12.2
Summary: 
Author: pluto
Author-email: mayuanchi1029@gmail.com
Requires-Python: >=3.8,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: PyExecJS (>=1.5.1,<2.0.0)
Requires-Dist: fake-useragent (>=1.1.1,<2.0.0)
Requires-Dist: pandas (>=1.5.0,<3.0.0)
Requires-Dist: pydash (>=7.0.3,<8.0.0)
Requires-Dist: requests
Description-Content-Type: text/markdown

[![PyPI version](https://badge.fury.io/py/pywencai.svg)](https://badge.fury.io/py/pywencai)
[![Downloads](https://static.pepy.tech/badge/pywencai/month)](https://pepy.tech/project/pywencai)
# pywencai

获取同花顺问财数据

## 环境依赖

由于程序中执行了js代码，请先保证已安装了[Node.js](https://nodejs.org/en/)，需要版本**v16+**

未安装请自行安装

## 安装

```
pip install pywencai
```
> 由于问财接口策略经常发生变化，请安装最新版本使用，遇到问题时，优先尝试升级解决

## 视频教程

[如何使用Python获取同花顺问财数据？全网最简单方法！](https://www.bilibili.com/video/BV1NP411C7UU/)

# Demo

```python
import pywencai

res = pywencai.get(query='退市股票', sort_key='退市@退市日期', sort_order='asc')
print(res)
```

# API

## get(**kwargs)

根据问财语句查询结果

### 参数

#### query

必填，查询问句

> 老版本的question参数1.0版本以后会弃用，请以后统一使用query参数

#### sort_key

非必填，指定用于排序的字段，值为返回结果的列名

#### sort_order

非必填，排序规则，至为`asc`（升序）或`desc`（降序）

#### page

非必填，查询的页号，默认为1

#### perpage

非必填，每页数据条数，默认值100，由于问财做了数据限制，最大值为100，指定大于100的数值无效。

#### loop

非必填，是否循环分页，返回多页合并数据。默认值为`False`，可以设置为`True`或具体数值。

当设置为`True`时，程序会一直循环到最后一页，返回全部数据。

当设置具体数值`n`时，循环请求n页，返回n页合并数据。

#### query_type

非必填，默认为`stock`，当查询的类型不是股票的时候需要传，取值如下：

| 取值 | 含义 |
|-|-|
| stock | 股票 |
| zhishu | 指数 |
| fund | 基金 |
| hkstock | 港股 |
| usstock | 美股 |
| threeboard | 新三板 |
| conbond | 可转债 |
| insurance | 保险 |
| futures | 期货 |
| lccp | 理财 |
| foreign_exchange | 外汇 |

#### retry

非必填，默认为10，表示请求失败后的重试次数。

#### sleep

非必填，默认为0，表示循环请求时，每次请求间隔多少秒。

#### log

非必填，默认为`False`，是否在控制台打印日志。

#### pro

非必填，默认为False，付费版传True，

> 必须传入cookie参数才能使用付费版


#### cookie

非必填，默认为None，免费版可以忽略，付费版必须传入cookie，获取付费使用权限。

```python
pywencai.get(question='近3个月每日市盈率', pro=True, cookie='xxxx')
```
cookie获取方法，复制请求头中的Cookie字段值

![cookie](./cookie.png)
 

#### request_params

非必填，默认为`{}`，可以设置额外的request参数

```python
pywencai.get(query='昨日涨幅', sort_order='asc', loop=True, log=True, request_params={ 'proxies': proxies, 'timeout': (5, 10) })
```
> 具体参数参看：[https://requests.readthedocs.io/en/latest/api/#requests.request](https://requests.readthedocs.io/en/latest/api/#requests.request)

#### no_detail

非必填，默认为`False`，当为`True`时，查询一些**详情类问题**不再会返回字典，而返回`None`，可以保证查询结果类型一直为`pd.DataFrame`或`None`。

#### find

非必填，默认为`None`，可以传一个数组，例如`['600519', '000010']`，数组内的对应标的会排列在DataFrame的最前面。

**【注意】** 1、该参数只有结果范围DataFrame时有效。2、配置该参数后，loop参数会失效，结果只会返回前100条。

#### user_agent

非必填，默认为`None`，可以自己传`user_agent`，不使用随机的生成的`user_agent`

### 返回值

当查询的是列表时，该方法返回一个`pandas`的`Dataframe`

当查询的是详情时，该方法返回一个字典，字典中可能包含若干个文本和`Dataframe`

## 联系方式

微信公众号

<img src="./weixin.jpg" width=400>




