从asx.com.au中提取数据的python库

pyasx的Python项目详细描述


Build StatusPython Version

python库通过未记录的api获取asx库存信息 用于www.ASX.com.au

主要功能有;

  • 在澳大利亚证券交易所上市的公司和证券的完整名单
  • 提取详细的公司信息
  • 拉动公司监管公告

而pyasx提供定价信息,使用 AlphaVantage是 最新和历史价格数据的更好选择。

注意:这个库使用了来自 asx.com.au网站因此可能会走上谷歌和雅虎金融的道路 因为api被不客气地杀掉了。

安装

通过PIP安装:

$ pip install pyasx

API

获得上市公司(

调出所有在澳大利亚证券交易所上市的公司的名单。这不包括 公司以外的任何公司,即无EFT/ETP、期权、认股权证等。

示例

>>> import pyasx.data.companies
>>> results = pyasx.data.companies.get_listed_companies()
>>> print(results, indent=4)
[
    {
        "ticker": "MOQ",
        "name": "MOQ LIMITED"
        "gics_industry": "Software & Services",
    },
    {
        "ticker": "1PG",
        "name": "1-PAGE LIMITED"
        "gics_industry": "Software & Services",
    },
    {
        "ticker": "ONT",
        "name": "1300 SMILES LIMITED"
        "gics_industry": "Health Care Equipment & Services",
    },
    ...
    {
        "ticker": "ZYB",
        "name": "ZYBER HOLDINGS LTD"
        "gics_industry": "Software & Services",
    }
]

获取公司信息

使用给定的ticker符号提取公司信息。这也是 包括 pyasx.data.securities.get_security_info()

这只对一家公司有效,不会返回信息, 交易所买卖基金、认股权证、指数等,请使用 pyasx.data.securities.get_security_info()

示例

>>> import pyasx.data.companies
>>> results = pyasx.data.companies.get_company_info('CBA')
>>> print(results, indent=4)
{
    "ticker": "CBA",
    "name": "COMMONWEALTH BANK OF AUSTRALIA.",
    "name_short": "COMMONWEALTH BANK.",
    "gics_sector": "Financials",
    "gics_industry": "Banks",
    "principal_activities": "Banking, financial and related services.",
    "website": "http://www.commbank.com.au/",
    "mailing_address": "Ground Floor, Tower 1, 201 Sussex Street, SYDNEY, NSW, AUSTRALIA, 2000",
    "phone_number": "(02) 9378 2000",
    "fax_number": "(02) 9118 7192",
    "registry_name": "LINK MARKET SERVICES LTD",
    "registry_phone_number": "1800 022 440",
    "listing_date": datetime.datetime(1997, 5, 1, 0, 0, tzinfo=tzoffset(None, 36000)),
    "delisting_date": null,
    "foreign_exempt": false,
    "products": [
        "shares",
        "hybrid-securities",
        "options",
        "warrants"
    ],
    "primary_share": {
        "ticker": "CBA",
        "type": "Ordinary Fully Paid",
        "isin": "AU000000CBA7",
        "open_price": 74.1,
        "last_price": 72.81,
        "offer_price": 72.92,
        "bid_price": 72.8,
        "last_trade_date": datetime.datetime(2018, 5, 1, 0, 0, tzinfo=tzoffset(None, 36000)),
        "average_daily_volume": 2610218,
        "day_high_price": 74.16
        "day_low_price": 72.81,
        "day_change_price": -2.06,
        "day_change_percent": "-2.751%",
        "day_volume": 3617914,
        "prev_day_close_price": 74.87,
        "prev_day_change_percent": "-1.201%",
        "year_open_price": 75.27,
        "year_high_price": 87.74,
        "year_high_date": datetime.datetime(2017, 5, 1, 0, 0, tzinfo=tzoffset(None, 36000)),
        "year_low_price": 72.81,
        "year_low_date": datetime.datetime(2018, 5, 1, 0, 0, tzinfo=tzoffset(None, 36000)),
        "year_change_price": -2.46,
        "year_change_percent": "-3.268%",
        "annual_dividend_yield": 5.91,
        "securities_outstanding": 1752728198,
        "market_cap": 131226760184,
        "pe": 12.68,
        "eps": 5.7442,
        "is_suspended": false,
        "indices": [
            {
                "code": "XTL",
                "name": "S&P/ASX 20"
            },
            ...
        ]
    },
    "last_dividend": {
        "type": "",
        "amount_aud": "",
        "franked_percent": "",
        "created_date": "",
        "ex_date": "",
        "record_date": "",
        "books_close_date": "",
        "payable_date": "",
        "comments": ""
    },

}

获取公司公告()

用给定的 股票代码。这只适用于公司,不适用于 其他证券。

note这目前只吸引20个最新的market sensitive 公告。

示例

>>> import pyasx.data.companies
>>> results = pyasx.data.companies.get_company_announcements('CBA')
>>> print(results, indent=4)
[
    {
        "num_pages": 106,
        "title": "CommBank PERLS X Capital Notes - Replacement Prospectus",
        "url": "http://www.asx.com.au/asxpdf/20180315/pdf/43sg1vw9rn1yl1.pdf",
        "release_date": datetime.datetime(2018, 5, 1, 0, 0, tzinfo=tzoffset(None, 36000)),
        "size": "4.7MB",
        "document_date": datetime.datetime(2018, 5, 1, 0, 0, tzinfo=tzoffset(None, 36000))
    },
    {
        "num_pages": 185,
        "title": "2018 Half Year Results Profit Announcement",
        "url": "http://www.asx.com.au/asxpdf/20180207/pdf/43rd1t86s7g1ll.pdf",
        "release_date": datetime.datetime(2018, 3, 1, 0, 0, tzinfo=tzoffset(None, 36000)),
        "size": "19.9MB",
        "document_date": datetime.datetime(2018, 3, 1, 0, 0, tzinfo=tzoffset(None, 36000))
    },
    ...
]

[删除:获取已上市证券]

注意由于asx.com.au上的中断更改,此功能已被禁用

[删除:提取ASX上列出的所有证券的列表。]

示例

>>> import pyasx.data.securities
>>> results = pyasx.data.securities.get_listed_securities()
>>> print(results, indent=4)
[
    {
        "isin": "AU000000IJH2",
        "ticker": "IJH",
        "name": "ISHARES MID-CAP ETF",
        "type": "CHESS DEPOSITARY INTERESTS 1:1 ISHS&P400"
    },
    {
        "isin": "AU000000IJH2",
        "ticker": "MOQ",
        "name": "MOQ LIMITED",
        "type": ORDINARY FULLY PAID"
    },
    {
        "isin": "AU000000IJH2",
        "ticker": "MOQAI",
        "name": "MOQ LIMITED",
        "type": "OPTION EXPIRING VARIOUS DATES EX VARIOUS PRICES"
    },
    ...
    {
        "isin": "AU0000ZYBAI9",
        "ticker": "ZYBAI",
        "name": "ZYBER HOLDINGS LTD",
        "type": "OPTION EXPIRING VAR DATES RESTRICTED VAR PRICES"
    }
]

获取安全信息

使用给定的股票代号提取证券上的定价信息。 这可以用于任何类型的上市证券,如公司股票, 债券、ETF等

示例

>>> import pyasx.data.securities
>>> results = pyasx.data.securities.get_security_info('CBAPC')
>>> print(results, indent=4)
{
    "ticker": "CBAPC",
    "type": "Cap Note 3-bbsw+3.80% Perp Non-cum Red T-12-20",
    "isin": "AU0000CBAPC9",
    "open_price": 100.4,
    "last_price": 100.61,
    "offer_price": 100.66,
    "bid_price": 100.6,
    "last_trade_date": datetime.datetime(2018, 5, 1, 0, 0, tzinfo=tzoffset(None, 36000)),
    "average_daily_volume": 12781,
    "day_low_price": 100.4,
    "day_high_price": 100.66,
    "day_change_price": 0.18,
    "day_change_percent": "0.179%",
    "day_volume": 18446,
    "prev_day_close_price": 100.43,
    "prev_day_change_percent": "-0.366%",
    "year_open_price": 104.18,
    "year_high_price": 100.66,
    "year_high_date": datetime.datetime(2017, 5, 1, 0, 0, tzinfo=tzoffset(None, 36000)),
    "year_low_price": 0,
    "year_low_date": datetime.datetime(2018, 5, 1, 0, 0, tzinfo=tzoffset(None, 36000)),
    "year_change_price": -3.57,
    "year_change_percent": "-3.427%",
    "annual_dividend_yield": 3.89,
    "securities_outstanding": 1752728198,
    "market_cap": 131226760184,
    "pe": 0,
    "eps": 0,
    "is_suspended": false,
    "indices": []
}

单元测试

单元测试可以通过执行test.py文件来运行,就像这样;

python3 tests.py

更改日志

2.2

  • 由于中断而禁用pyasx.data.securities.get_listed_securities() 在asx.com.au上更改
  • 修复pyasx.data.securities.get_security_info()单元测试中的错误

2.1.7

  • 需求安全修补程序

2.1.5

  • 文档更新

2.1.1

  • 小错误修复

2.1.0

  • 在API 404S时引发UnknownTickerException

2.0.0

  • 现在返回的日期是datetime对象,而不是字符串
  • 更好的异常处理

1.1.0

  • 优化的get_company_info()只使用一个API调用
  • 将gics§or字段更改为gics_industry和gics_sector
  • 文档更新

1.0.2

  • 错误修复-dist中缺少配置文件

1.0.1

  • 错误修复-pypi上的pypandoc依赖性失败

1.0

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
IE中的java跨域cookie问题   重复java中已经满足的循环   编译java RMI服务器时出错   JavaServlet POST中作为参数传递的javascript大型JSON数组数据为空   java片段未每次刷新/调用   java无法编译。错误消息   java如何构造大型类?   java Hibernate:TableThingsDB。事情并不存在   java如何操作从匹配项创建的数组。发现   循环以搜索和显示数组Java的某些部分   加载或注册SQLite JDBC驱动程序时出现java问题   活动和服务之间的java连接   JavaGWTG2D:ie8中的drawImage   java在安卓中设置hessian阈值   在Tomcat中使用Logback时发生java错误