{ "cells": [ { "cell_type": "code", "execution_count": null, "id": "hybrid-emerald", "metadata": {}, "outputs": [], "source": [ "import sys\n", "sys.path" ] }, { "cell_type": "markdown", "id": "brief-chamber", "metadata": {}, "source": [ "Instruct python to load external modules not bundled with the " ] }, { "cell_type": "code", "execution_count": null, "id": "trying-sewing", "metadata": {}, "outputs": [], "source": [ "sys.path.append('/home/jovyan/work/modules')\n", "import youtube" ] }, { "cell_type": "code", "execution_count": null, "id": "chemical-width", "metadata": {}, "outputs": [], "source": [ "#\n", "# https://programmer.ink/think/5d872dc23f36a.html\n", "# \n", "from lxml import etree\n", "import requests\n", "import csv\n", "import os\n", "\n", "def get_shareholdings(stkcode, tdate, lang='c'):\n", "\n", " headers={\"User-Agent\":\"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36\"}\n", " \n", " url= \"https://www.hkexnews.hk/sdw/search/searchsdw%s.aspx\" % ('_c' if lang == 'c' else '')\n", " print(url)\n", " shs_hold_date = '%s/%s/%s' % (tdate[0:4], tdate[4:6], tdate[6:8])\n", " datatime = {'__EVENTTARGET': 'btnSearch',\n", " '__EVENTARGUMENT':'',\n", " '__VIEWSTATE': '/wEPDwULLTIwNTMyMzMwMThkZHNjXATvSlyVIlPSDhuziMEZMG94',\n", " '__VIEWSTATEGENERATOR': '3B50BBBD',\n", " 'today': tdate,\n", " 'sortBy': 'shareholding',\n", " 'sortDirection': 'desc',\n", " 'alertMsg':'',\n", " 'txtShareholdingDate': shs_hold_date,\n", " 'txtStockCode': stkcode,\n", " 'txtStockName': '',\n", " 'txtParticipantID':'',\n", " 'txtParticipantName':''\n", " }\n", " repensoe=requests.post(url,headers=headers,data=datatime)\n", " text=repensoe.text\n", " html1 = etree.HTML(text)\n", " div = html1.xpath(\"//div[@id='pnlResultNormal']//tbody%s\" % ('/tr' if lang != 'en' else ''))\n", " data = []\n", " print(\"--\" * 2)\n", " valuetime = html1.xpath(\"//input[@id='txtShareholdingDate']/@value\")\n", " print(valuetime[0]+\"Data available\")\n", " filename = 'shshold-%s-%s%s.csv' % (stkcode, tdate, ('_c' if lang != 'en' else ''))\n", " \n", " for tb in div:\n", " try:\n", " participant_id = tb.xpath(\"./td[1]/div/text()\")[1]\n", " except IndexError:\n", " participant_id = ''\n", " participant_name = tb.xpath(\"./td[2]/div/text()\")[1]\n", " print (participant_name)\n", " participant_address = tb.xpath(\"./td[3]/div/text()\")[1]\n", " right = tb.xpath(\"./td[4]/div/text()\")[1]\n", " percent = tb.xpath(\"./td[5]/div/text()\")[1]\n", " datadic = {\"date\": valuetime[0], \"Participant number\": participant_id, \"Central System Participant Name\": participant_name, \"address\": participant_address, \"Shareholding\": right,\"Proportion\": percent}\n", " data.append(datadic)\n", " \n", " \n", "\n", "\n", " csvhead = [\"date\", \"Participant number\", \"Central System Participant Name\", \"address\", \"Shareholding\",\"Proportion\"]\n", " with open(filename, 'w', newline='') as fp:\n", " write = csv.DictWriter(fp, csvhead)\n", " write.writeheader()\n", " write.writerows(data)\n", " \n", "\n", "\n", "if __name__ == '__main__':\n", " os.getcwd()\n", " os.chdir(\"./\") \n", " get_shareholdings('01810', '20210204')\n", " " ] }, { "cell_type": "code", "execution_count": 8, "id": "legendary-blocking", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | date | \n", "Participant number | \n", "Central System Participant Name | \n", "address | \n", "Shareholding | \n", "Proportion | \n", "
|---|---|---|---|---|---|---|
| 0 | \n", "2021/02/04 | \n", "C00019 | \n", "香港上海匯豐銀行有限公司 | \n", "HSBC WEALTH BUSINESS SERVICES 8/F TOWER 2 & 3 ... | \n", "6,174,683,773 | \n", "24.51% | \n", "
| 1 | \n", "2021/02/04 | \n", "C00100 | \n", "JPMORGAN CHASE BANK, NATIONAL ASSOCIATION | \n", "18/F TOWER 2 THE QUAYSIDE 77 HOI BUN ROAD KWUN... | \n", "2,469,268,967 | \n", "9.80% | \n", "
| 2 | \n", "2021/02/04 | \n", "C00010 | \n", "花旗銀行 | \n", "9/F CITI TOWER ONE BAY EAST 83 HOI BUN ROAD KW... | \n", "2,331,702,033 | \n", "9.25% | \n", "
| 3 | \n", "2021/02/04 | \n", "A00004 | \n", "CHINA SECURITIES DEPOSITORY AND CLEARING | \n", "17 TAIPING QIAO STREET XICHENG DISTRICT BEIJIN... | \n", "1,607,058,225 | \n", "6.38% | \n", "
| 4 | \n", "2021/02/04 | \n", "A00003 | \n", "中國証券登記結算有限責任公司 | \n", "17 TAIPING QIAO STREET XICHENG DISTRICT BEIJIN... | \n", "1,460,955,022 | \n", "5.80% | \n", "