Skip to main content

A humanize XueQiu API wrappers.

Project description

xueqiu

a humanize XueQiu API wrappers.

Quick start

Installation

pip install xueqiu

Example:

>>> news = xueqiu.news()  # watch the news
>>> news
{'list': [<xueqiu.Post 为何价值投资长期有效[https://xueqiu.com/8291461932/120351059]>,
  <xueqiu.Post 韬蕴资本CEO温晓东怒斥贾跃亭怎就一个[https://xueqiu.com/2095268812/120483699]>,
  <xueqiu.Post 增持与回购20190122-201901[https://xueqiu.com/9206540776/120458648]>,
  <xueqiu.Post 医药研发外包为什么这么红?()[https://xueqiu.com/1472391509/120481662]>,
  <xueqiu.Post 医药大赛道之大分子生物药[https://xueqiu.com/1472391509/120482094]>,
  <xueqiu.Post 增强型指数基金到底在哪里[https://xueqiu.com/8082119199/120480761]>,
  <xueqiu.Post 价值投资不需要概率思维吗?—与董宝珍先生[https://xueqiu.com/3555476733/120245234]>,
  <xueqiu.Post 邓晓峰的投资观[https://xueqiu.com/7649503965/120430145]>,
  <xueqiu.Post 复利无敌买入一只股票看这四点[https://xueqiu.com/1876906471/120479202]>,
  <xueqiu.Post 再论安全边际[https://xueqiu.com/4465952737/120453192]>],
 'next_max_id': 20323343}
>>> p = news['list'][0]
>>> "{} {}{} 评论{} 转发{} {}".format(p.title, p.user.name, p.like_count,
                                        p.reply_count, p.retweet_count, p.target)
'为何价值投资长期有效 房杨凯的投资世界 赞9 评论11 转发9 https://xueqiu.com/8291461932/120351059'
>>> p.user.get_posts()  # get user's article
>>> p.user.posts
{'count': 622,
 'page': 1,
 'maxpage': 63,
 'list': [<xueqiu.Post [https://xueqiu.com/8291461932/120497097]>,
  <xueqiu.Post [https://xueqiu.com/8291461932/120491351]>,
  <xueqiu.Post [https://xueqiu.com/8291461932/120487476]>,
  <xueqiu.Post [https://xueqiu.com/8291461932/120487448]>,
  <xueqiu.Post [https://xueqiu.com/8291461932/120486037]>,
  <xueqiu.Post 腾讯游戏帝国的护城河还在吗[https://xueqiu.com/8291461932/120485596]>,
  <xueqiu.Post [https://xueqiu.com/8291461932/120473933]>,
  <xueqiu.Post [https://xueqiu.com/8291461932/120434054]>,
  <xueqiu.Post [https://xueqiu.com/8291461932/120434037]>,
  <xueqiu.Post [https://xueqiu.com/8291461932/120434020]>]}
>>> p.user.posts['list'][0].text  # content
'回复@A8天道酬勤: 这个问题应该放在买之前。//@A8天道酬勤:回复@房杨凯的投资世界:假如花旗银行做假账,聂夫还会不会持有?'
>>> p.user.posts['list'][0].like()  # like this (need login)

API

User class

A user class that contains user-related methods.

User object attributes:

  • id - user id.
  • profile - user's profile url.
  • name - user name.
  • city - city, for example '上海'.
  • description - user description.
  • friends_count - the number of user's friends.
  • followers_count - the number of user's fans.
  • posts_count - the number of user's post.
  • stocks_count - the number of stocks.
  • friends - use to save User object for friends.
  • followers - use the save User object for fans.
  • posts - use the save Post object for post.
  • articles - use the save Post object for user's article.
  • favorites - use the save Post object for favorite articles.
  • stocks - use the save Stock object for favorite stocks.
  • hot_stocks - use the save Stock object for the current hot stocks.

User object methods:

  • get_friends(page: int = 1) - get your friends and save to self.friends.

  • get_followers(page: int = 1) - get your fans and save to self.followers.

  • get_posts(page: int = 1, count: int = 10) - get your posts and save to self.posts.

  • get_articles(page: int = 1, count: int = 10) - get your articles and save to self.articles.

  • get_favorites(page: int = 1, count: int = 20) - get your favorite posts and save to self.favorites.

  • get_stocks(mkt: int = 1, count: int = 1000) - get your stocks and save to self.stocks.

  • get_hot_stocks(mkt: int = 10, time_range: str = "hour", count: int = 10) - get hottest stocks.

    • :param mkt: (optional) market type, default is 10.
      • value: 全球10 沪深12 港股13 美股11
    • :param time_range: (optional) hottest stocks by time range, default is hour.
      • value: hour, day
    • :param count: (optional) the number of results, default is 10.
  • send_verification_code(phone: int) - send verification code to your phone. Note: only 5 times a day.

  • login(uid: str = '', passwd: str = '', login_type: str = 'phone') - user login by password or verification code. If the cookie cache exists, load it first and return. Otherwise, login and save the cookie to file (Linux ~/.xueqiu/cookie or Windows).

    • :param uid: your username or phone number.
    • :param passwd: your password or verification code.
    • :param login_type: (optional) login type, default is phone.
      • value: password, phone
  • load_cookie() - load cookies from local file or browser(chrome or firefox). You can login your account on the chrome browser, then execute load_cookie(), and now login successfully.

Example:

>>> u = User(2478797769)
>>> u.name
"红利基金"
>>> u.get_posts()
>>> u.posts['list'][0].title
'【你了解红利基金吗】红利基金(501029)热问快答!(12.31)'
>>> u.get_favorites()
>>> u.favorites['list'][0].title
'2018年A股大数据盘点:30张图尽览市场热点'

Post class

A post class that contains post-related methods.

Post object attributes:

  • id - post id.
  • user - post authors. a User class object.
  • created_at - created time. a Arrow class object.
  • target - post url.
  • view_count - view count.
  • reply_count - reply count.
  • retweet_count - retweet count.
  • fav_count - favorites count.
  • like_count - like count.
  • title - post title.
  • text - post content.
  • full_text - the full content of the article.
  • comments - use the save Comment object for post.

Post object methods:

  • get_content() - get article content and save to self.full_text.
  • get_comments(page: int = 1, count: int = 20, asc: str = 'false') - get article comments and save to self.comments.
  • like() - like the article. (require login)
  • unlike() - unlike the article. (require login)
  • favorite() - favorite the article. (require login)
  • unfavorite() - unfavorite the article. (require login)

Example:

>>> p = Post('2478797769/78869335')
>>> p.user.name
"红利基金"
>>> p.created_at.format("YYYY-MM-DD")
"2016-12-13"
>>> p.title
'【你了解红利基金吗】红利基金(501029)热问快答!(12.31)'
>>> p.target
"https://xueqiu.com/2478797769/78869335"
>>> p.get_content()
>>> p.full_text
'目录:\n一、\n华宝标普中国A股红利机会指数证券投资基金\n......'
>>> p.get_comments()
>>> p.comments['list'][-1].text
'为什么成份股中有很多次新股?百思不得其解'

Comment class

A comment class that contains comment-related methods.

Comment object attributes:

  • id - comment id.
  • user - comment authors. a User class object.
  • post - comment on an article. a Post class object.
  • created_at - created time. a Arrow class object.
  • like_count - like count.
  • text - comment content.

Comment object methods:

  • like() - like the comment. (require login)
  • unlike() - unlike the comment. (require login)

Example:

>>> p = Post('2478797769/78869335')
>>> p.get_comments()
>>> c = p.comments['list'][0]
>>> c.user.name
'红利基金'
>>> c.text
'回复@孙浩云: 怎么可能....2018年跌幅为24.54%,较主流指数跌幅较小。不知道您50%多是哪儿看来的呢'

Selector class

The Selector class implements a stock filter.

Selector object attributes:

  • market - market string, default is SH.
    • value: SH, HK, US
  • queries - include default parameters with selector.

Selector object methods:

  • url() - return a selector url string.
  • help(range: str = "base", show: str = "text") - show selector parameters.
    • :param range: (optional) parameters range, default is base. value:
      • SH: industries, areas, base, ball, quota, finan_rate, stock_data, profit_sheet, balance_sheet, cash_sheet
      • HK: industries, base, ball, quota
      • US: industries, base, ball, quota, grow, profit_sheet, balance_sheet, cash_sheet
    • :param show: (optional) output help or return generator, default is text.
      • value: text, keys
  • scope(exchange: str = '', indcode: str = '', areacode: str = '') - set stock selector scope.
    • :param exchange: (optional) set A-share exchange market, default is None.
      • value: SH, SZ or None
    • :param indcode: (optional) set industry code, default is None. please see self.help('industries')
    • :param areacode: (optional) set area code, default is None. please see self.help('areas')
  • param(*args, **kwargs) - set stock selector paramters.
    • :param *args: (optional) set parameters key, default value is ALL. for example, the self.param('pb', 'mc') will be set pb=ALL&mc=ALL params.
    • :param **kwargs: (optional) set parameters key and value. for example, the self.param('pettm'=0_30) will be set pettm=0_30 param.
  • orderby(key: str = 'symbol') - stock selector results are sorted by field.
    • :param key: the results are sorted by the key, default is symbol. the key parameters can be viewed through self.help('base').
  • order(ord: str = 'desc') - set stock selector results are sorted.
    • :param ord: the ascending and descending order, default is desc.
      • value: asc, desc
  • page(page: int = 1) - set stock selector results page number.
  • count(size: int = 10) - the number of stock selector results.
  • run() - sends a stock screener request and return [Stock class] list.

Example:

>>> s = Selector("SH")
# scope 深市,房地产,浙江地区
# param 筛选总市值,18年3季度ROE 0-30%
# orderby 按市值排序
# order 升序排列
# page 第2页
# count 每页2个
>>> result = s.scope('SZ','K70','CN330000').param('mc', roediluted_20180930='0_30').orderby('mc').order('asc').page(2).count(2).run()
>>> result['list']
[<xueqiu.Stock 荣安地产[SZ000517]>, <xueqiu.Stock 滨江集团[SZ002244]>]

Stock class

A stock class that contains stock-related methods.

Stock object attributes:

base

  • symbol - stock symbol.
  • code - stock code.
  • name - stock name.
  • current - current price.
  • current_year_percent - current year return.
  • percent - change rate.
  • chg - change amount.
  • open - price today.
  • last_close - last close.
  • high - highest.
  • low - lowest.
  • avg_price - average price.
  • volume - trading volume.
  • amount - amount.
  • turnover_rate - turnover rate.
  • amplitude - amplitude.
  • market_capital - market capital.
  • float_market_capital - float market capital.
  • total_shares - total shares.
  • float_shares - float shares.
  • currency - currency unit.
  • exchange - stock exchange.
  • issue_date - launch date. a Arrow class object.

extend

  • limit_up - stock limit up.
  • limit_down - stock limit down.
  • high52w - the highest of the fifty-two weeks.
  • low52w - the lowest of the fifty-two weeks.
  • volume_ratio - volume ratio.
  • pe_lyr - pe lyr.
  • pe_ttm - pe ttm.
  • pe_forecast - pe forecast.
  • pb - price/book value ratio.
  • eps - earnings per share.
  • bps - net asset value per share.
  • dividend - stock dividend.
  • dividend_yield - stock dividend yield.
  • profit - net profit.
  • profit_forecast - profit forecast.
  • profit_four - profit last four quarters.

others

  • time - current time. a Arrow class object.
  • posts - used to the save Post object for stock.
  • followers - used to the save User object for stock's fans.
  • prousers - used to the save User object for stock's professional users.
  • popstocks - pop stocks.
  • industries - industry stocks.
  • history - stock history.

Stock object methods:

  • refresh(dt: dict = {}) - get current stock data and update self.time.
  • get_posts(page: int = 1, count: int = 20, sort: str = "time", source: str = "all") - get stock posts and save to self.posts.
    • :param page: (optional) page number, default is 1.
    • :param count: (optional) the number of results, default is 20.
    • :param sort: (optional) order type, default is time.
      • value: time最新, reply评论, relevance默认
    • :param source: (optional) source of the results, default is all.
      • value: all, user讨论, news新闻, notice公告, trans交易
  • get_followers(page: int = 1, count: int = 15) - get stock fans and save to self.followers.
    • :param page: (optional) page number, default is 1.
    • :param count: (optional) the number of results, default is 15.
  • get_prousers(count: int = 5) - get stock professional users and save to self.prousers.
  • get_popstocks(count: int = 8) - get pop stocks and save to self.popstocks.
  • get_industry_stocks(count: int = 8) - get industry stocks and save to self.industries.
  • get_histories(begin: str = '-1m', end: str = arrow.now(), period: str = 'day') - get stock history data and save to self.history.
    • :param begin: the start date of the results.
      • value: -1w -2w -1m -3m -6m -1y -2y -3y -5y cyear issue or YYYY-MM-DD
    • :param end: (optional) the end date of the results, default is now.
    • :param period: (optional) set date period, default is day.
      • value: day week month quarter year 120m 60m 30m 15m 5m 1m

Example:

>>> s = Stock("SH601318")
>>> s.symbol
"SH601318"
>>> s.name
"中国平安"
>>> s.market_capital
1119664786363.0
>>> s.issue_date.format("YYYY-MM-DD")
"2007-02-28"
>>> s.refresh()  # update stock data
>>> s.get_posts()
{'count': 188745,
 'page': 1,
 'maxpage': 100,
 'list': [<xueqiu.Post [https://xueqiu.com/1566609429/120543602]>,
  <xueqiu.Post [https://xueqiu.com/1083048635/120542397]>,
  <xueqiu.Post [https://xueqiu.com/6376335219/120542355]>,
  <xueqiu.Post [https://xueqiu.com/8335420516/120542213]>,
  <xueqiu.Post [https://xueqiu.com/2706248223/120542082]>,
  <xueqiu.Post [https://xueqiu.com/4298761680/120542015]>,
  <xueqiu.Post [https://xueqiu.com/2856403580/120541995]>,
  <xueqiu.Post [https://xueqiu.com/6122867052/120541786]>,
  <xueqiu.Post [https://xueqiu.com/1083048635/120541288]>,
  <xueqiu.Post [https://xueqiu.com/9598902646/120541255]>]}
>>> s.get_popstocks()
>>> s.popstocks
[<xueqiu.Stock 招商银行[SH600036]>,
 <xueqiu.Stock 兴业银行[SH601166]>,
 <xueqiu.Stock 民生银行[SH600016]>,
 <xueqiu.Stock 贵州茅台[SH600519]>,
 <xueqiu.Stock 苏宁易购[SZ002024]>,
 <xueqiu.Stock 万科A[SZ000002]>,
 <xueqiu.Stock 腾讯控股[00700]>,
 <xueqiu.Stock 中绿[02988]>]
>>> s.get_industry_stocks()
>>> s.industries
{'industryname': '非银金融',
 'list': [<xueqiu.Stock 九鼎投资[SH600053]>,
  <xueqiu.Stock 华林证券[SZ002945]>,
  <xueqiu.Stock 爱建集团[SH600643]>,
  <xueqiu.Stock 中航资本[SH600705]>,
  <xueqiu.Stock 华铁科技[SH603300]>,
  <xueqiu.Stock 民生控股[SZ000416]>,
  <xueqiu.Stock 熊猫金控[SH600599]>,
  <xueqiu.Stock 宏源证券[SZ000562]>]}
>>> s.get_histories('2019-01-07','2019-01-11')
>>> s.history.iloc[:,0:8]
date           volume   open   high    low  close   chg  percent  turnoverrate
2019-01-07   76593007  57.09  57.17  55.90  56.30 -0.29    -0.51          0.70
2019-01-08   55992092  56.05  56.09  55.20  55.80 -0.50    -0.89          0.51
2019-01-09   81914613  56.20  57.60  55.96  56.95  1.15     2.06          0.75
2019-01-10   67328223  56.87  57.82  56.55  57.50  0.55     0.97          0.61
2019-01-11   45756973  58.00  58.29  57.50  58.07  0.57     0.99          0.42
>>> s.history.iloc[:,8:17]
date            ma5    ma10     ma20     ma30      pe     pb        ps       pcf  market_capital
2019-01-07   55.970  56.885  59.2520  60.7143  10.073  1.949  1.051972  3.536000    1.029178e+12
2019-01-08   55.910  56.631  58.8920  60.4863   9.984  1.932  1.042629  3.504597    1.020037e+12
2019-01-09   56.264  56.501  58.6305  60.2780  10.190  1.972  1.064117  3.576824    1.041060e+12
2019-01-10   56.628  56.430  58.3970  60.0910  10.288  1.991  1.074394  3.611368    1.051114e+12
2019-01-11   56.924  56.507  58.1775  59.9010  10.390  2.011  1.085044  3.647167    1.061534e+12
>>> s.get_histories('-1w')
>>> s.history.iloc[:,0:8]
date           volume   open   high    low  close   chg  percent  turnoverrate
2019-01-24   44940618  59.61  60.52  59.22  60.43  0.94     1.58          0.41
2019-01-25   67245911  60.50  61.78  60.43  61.29  0.86     1.42          0.62
2019-01-28   58164884  61.80  62.41  61.20  61.52  0.23     0.38          0.53
2019-01-29   39519294  61.38  61.90  60.98  61.65  0.13     0.21          0.36
2019-01-30   31000323  60.88  61.86  60.78  61.25 -0.40    -0.65          0.27
>>> s.get_histories('-1y')
>>> s.history[['pe','pb','ps']].describe()
               pe          pb          ps
count  243.000000  243.000000  243.000000
mean    11.840588    2.273996    1.217041
std      1.357489    0.215217    0.110052
min      9.728900    1.911000    1.031044
25%     10.849450    2.143200    1.150554
50%     11.504900    2.237300    1.197700
75%     12.628600    2.345200    1.251150
max     15.596700    2.935400    1.559700

Fund class

A fund class that contains fund-related methods.

Fund object attributes:

  • fund_nav - fund net value.
  • fund_nav_guess - estimate value.
  • fund_nav_premium - fund nav premium rate.
  • fund_history - fund history.
  • fund_stocks - component stocks.
  • fund_weight - stocks weight.

Fund object methods:

  • get_fund_stocks(year: str = "", mouth: str = "12") - get fund's stocks from 天天基金.
  • get_fund_nav() - get fund nav.
  • get_fund_histories(page: int = 1, size: int = 90) - get history fund nav.
  • calc_premium() - calculate fund premium.
  • refresh_all() - refresh all of the fund stock objects.

Example:

>>> f = Fund('501301')
>>> f.symbol
"SH501301"
>>> f.fund_nav
['2019-01-29', 1.1311, 1.1311, '-0.47%']
>>> f.get_fund_stocks()
>>> f.fund_stocks
       stocks          weight
0      中国移动[00941]  0.1082
1      工商银行[01398]  0.0975
2      腾讯控股[00700]  0.0970
3      建设银行[00939]  0.0932
4      中国平安[02318]  0.0922
5      中国银行[03988]  0.0642
6   中国海洋石油[00883]  0.0522
7      中国石化[00386]  0.0343
8      中国人寿[02628]  0.0297
9      招商银行[03968]  0.0267
>>> list(f.fund_stocks.weight)
[0.1082, 0.0975, 0.097, 0.0932, 0.0922, 0.0642, 0.0522, 0.0343, 0.0297, 0.0267]
>>> f.get_fund_histories('2019-01-07','2019-01-11')
>>> f.fund_history
date           nav    cnav percent
2019-01-07  1.0743  1.0743    0.70
2019-01-08  1.0679  1.0679   -0.60
2019-01-09  1.0949  1.0949    2.53
2019-01-10  1.0944  1.0944   -0.05
2019-01-11  1.0964  1.0964    0.18
>>> f.get_fund_histories('-1w')
date           nav    cnav percent
2019-01-25  1.1413  1.1413    2.02
2019-01-28  1.1364  1.1364   -0.43
2019-01-29  1.1311  1.1311   -0.47
2019-01-30  1.1379  1.1379    0.60
2019-01-31  1.1475  1.1475    0.84

get_all_funds function

Example:

>>> df = get_all_funds()
>>> df.groupby(by='type').count()
type       code  name
ETF-场内    171   171
QDII        171   171
QDII-ETF     10    10
QDII-指数    83    83
保本型       52    52
债券型     1613  1613
债券指数     69    69
其他创新      2     2
分级杠杆    132   132
固定收益    132   132
定开债券    657   657
混合-FOF     40    40
混合型     3167  3167
理财型      116   116
联接基金    194   194
股票型      373   373
股票指数    462   462
货币型      665   665
>>> df[df['code'].str.contains('^510')].head()
        code          name        type
7319  510010  交银上证180治理ETF  ETF-场内
7320  510020  博时上证超大盘ETF   ETF-场内
7321  510030  华宝上证180价值ETF  ETF-场内
7322  510050  华夏上证50ETF       ETF-场内
7323  510060  工银上证央企50ETF   ETF-场内
>>> df[df['name'].str.contains('恒生')].head()
        code          name            type
54    000071  华夏恒生ETF联接A        QDII-指数
58    000075  华夏恒生ETF联接现汇     QDII-指数
59    000076  华夏恒生ETF联接现钞     QDII-指数
761   000948  华夏沪港通恒生ETF联接A  QDII-指数
919   001149  汇丰晋信恒生龙头指数C   股票指数

get_all_funds_ranking function

Example:

>>> df = get_all_funds_ranking(fund_type='fof')  # 开放式基金排行
>>> df.head()[['code','name','issue_date','nav','current_year']]
   code    name                      issue_date  nav     current_year
0  005220  海富通聚优精选混合(FOF)   2017-11-06  0.8277  0.050781
1  006306  泰达宏利泰和平衡养老(FOF) 2018-10-25  1.0099  0.020513
2  006042  上投摩根尚睿混合(FOF)     2018-08-15  0.9931  0.011613
3  005222  泰达宏利全能混合(FOF)C    2017-11-02  0.9803  0.015644
4  005221  泰达宏利全能混合(FOF)A    2017-11-02  0.9850  0.015883
>>> df = get_all_funds_ranking(fund_type='ct')  # 场内基金排行
>>> df.tail()[['code','name','issue_date','nav','-1year','current_year']]
     code    name                      issue_date  nav    -1year     current_year
419  150197  国泰国证有色金属行业分级B 2015-03-30  0.3411 -0.715443  -0.038349
420  150294  南方中证高铁产业指数分级B 2015-06-10  0.4018 -0.543043  -0.057697
421  150308  富国中证体育产业指数分级B 2015-06-25  0.8470 -0.663614  -0.055753
422  150264  华宝中证1000指数分级B     2015-06-04  0.3436 -0.661696   0.031840
423  512590  浦银安盛中证高股息ETF     2019-01-29  1.0032       NaN        NaN

get_economic function

Example:

>>> get_economic()  # 获取经济指标
{'中国人民银行利率': '1083',
 '中国季度国内生产总值(GDP)年率': '461',
 '中国规模以上工业增加值年率': '462',
 '中国官方制造业采购经理人指数(PMI)': '594',
 '中国财新制造业采购经理人指数(PMI)': '753',
 '中国失业率': '1793',
 '中国贸易帐 (美元)': '466',
 '中国台湾利率决议': '1117',
......
>>> get_economic(search='美国')  # 获取经济指标 - 美国
{'美国失业率': '300',
 '美国总统选举': '371',
 '美国ADP就业人数': '1',
 '美国ISM制造业PMI': '173',
 '美国零售销售月率': '256',
 '美国营建许可总数': '25',
 '美国ISM非制造业PMI': '176',
 '美国核心零售销售月率': '63',
......
>>> df = get_economic('中国财新制造业采购经理人指数(PMI)')  # 获取财新PMI
>>> df.tail()
date        actual actual_state  forecast  revised
2018-09-30    50.0         down      50.5      NaN
2018-11-01    50.1           up      49.9      NaN
2018-12-03    50.2           up      50.1      NaN
2019-01-02    49.7         down      50.3      NaN
2019-02-01    48.3         down      49.5      NaN
>>> df.to_excel('output.xls')  # 导出excel

get_economic_of_china function

Example:

>>> get_economic_of_china(search='总人口')
[{'id': 'A01050201', 'name': '民族自治地方总人口数'},
 {'id': 'A030301', 'name': '年末总人口'},
 {'id': 'A030501', 'name': '人口普查总人口'},
 {'id': 'A030508', 'name': '人口普查0-14岁人口占总人口比重'},
......
>>> df = get_economic_of_china('A030101,A030102,A030103', time_period='1949-')
>>> df.to_period('A').tail()
   年末总人口  男性人口  女性人口
1953  58796.0  30468.0  28328.0
1952  57482.0  29833.0  27649.0
1951  56300.0  29231.0  27069.0
1950  55196.0  28669.0  26527.0
1949  54167.0  28145.0  26022.0
>>> get_economic_of_china(category='month', search='居民消费价格指数')
[{'id': 'A01010101', 'name': '居民消费价格指数(上年同月=100)'},
 {'id': 'A01010102', 'name': '食品烟酒类居民消费价格指数(上年同月=100)'},
 {'id': 'A01010103', 'name': '衣着类居民消费价格指数(上年同月=100)'},
 {'id': 'A01010104', 'name': '居住类居民消费价格指数(上年同月=100)'},
......
>>> get_economic_of_china("A01010101", category='month').to_period('M')
    居民消费价格指数(上年同月=100)
2018-12  101.860698
2018-11  102.175041
2018-10  102.543151
2018-09  102.472394
......
>>> get_economic_of_china(category='month_by_state', search='region')
[{'id': '110000', 'name': '北京市'},
 {'id': '120000', 'name': '天津市'},
 {'id': '130000', 'name': '河北省'},
 {'id': '140000', 'name': '山西省'},
......
>>> get_economic_of_china("A03010101", region='210000,130000', category='month_by_state').to_period('M')
        辽宁省  河北省
2018-12  333.6  381.0
2018-11  311.0  398.3
2018-10  274.3  429.2
2018-09  273.5  456.2
......

search function

  • search(query: str = "", query_type: str = "stock", symbol: str = "", count: int = 10, page: int = 1, sort: str = "time", source: str = "user") - Sends a search request.
    • :param query: query string.
    • :param query_type: (optional) type of the query request, default is stock.
      • value: stock, post, user
    • :param symbol: (optional) the stock symbol.
    • :param count: (optional) the number of results, default is 20.
    • :param page: (optional) page number, default is 1.
    • :param sort: (optional) order type, default is time.
      • value: time最新, reply评论, relevance默认
    • :param source: (optional) source of the results, default is user.
      • value: all, user讨论, news新闻, notice公告, trans交易
    • :return: a list of :class:Object <instance_id> objects. Object class: Stock, Post or User
    • :rtype: list([ins1, ins2, ...])

news function

  • news(category: int = -1, count: int = 10, max_id: int = -1) - Get news.
    • :param category: (optional) type of the news, default is -1.
      • value: 头条-1, 今日话题0, 直播6, 沪深105, 港股102, 美股101, 基金104, 私募113, 房产111, 汽车114, 保险110
    • :param count: (optional) the number of results, default is 10.
    • :param max_id: (optional) the max id of news, default is -1.
    • :return: a list of :class:Post <instance_id> objects.
    • :rtype: list([post1, post2, ...])

utils module

This module contains some utils.

  • get_cookies() - load cookies from local file, browser and selenium. return a LWPCookieJar class object.
  • get_session() - get the requests session.
  • clean_html(tree: str) - clean html.
  • check_symbol(code: str) - check stock symbol.
  • exrate(date: str = "", code: str = "USD") - get the monetary exchange rate by date.
    • code:
{'USD':'美元','EUR':'欧元','JPY':'日元','HKD':'港元','GBP':'英镑','AUD':'澳大利亚元',
 'NZD':'新西兰元','SGD':'新加坡元','CHF':'瑞士法郎','CAD':'加拿大元','MYR':'马来西亚林吉特',
 'RUB':'俄罗斯卢布','ZAR':'南非兰特','KRW':'韩元','AED':'阿联酋迪拉姆','SAR':'沙特里亚尔',
 'HUF':'匈牙利福林','PLN':'波兰兹罗提','DKK':'丹麦克朗','SEK':'瑞典克朗','NOK':'挪威克朗',
 'TRY':'土耳其里拉','MXN':'墨西哥比索','THB':'泰铢'}
  • exusd(date: str = "") - only for USD.
  • exhkd(date: str = "") - only for HKD.

Example:

>>> CJ = get_cookies()
>>> sess = get_session()
>>> clean_html("<span>hello.</span>")
hello.
>>> check_symbol(601318)
"SH601318"
>>> exrate("2019-01-10", "EUR")
[7.8765, 7.8443]
>>> exusd(date="2019-01-10")
[6.816, 6.8526]
>>> exhkd("2019-01-10")
[0.86959, 0.87419]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xueqiu-0.1.2.tar.gz (44.3 kB view hashes)

Uploaded Source

Built Distribution

xueqiu-0.1.2-py3-none-any.whl (30.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page