This python script will take an input of HTML or webarchive of the login page of https://internetbanking.mebank.com.au, parse the semi structured HTML content and return the transactions as structured data: JSON, CSV.
As of 05/12/2025, Australian bank MEBank (division of Bank of Queensland) offers an Internet banking platform with no function for transaction export, such as to CSV or OFX.
So this will do the job in the interim.
Works with file input and stdout output. No network connectivity, aka offline.
Saved Webarchive or HTML file containing transaction fields from internetbanking.mebank.com.au.
- Parse for known fields, interpet to a dict
- Parse human readable date strings to Australia/Sydney timezone and ISO format
Export to CSV or JSON
Requirements:
- python3
- Beautifulsoup4 (
pip install bs4) - Use of terminal/CLI
- Using a web browser that can save to .webarchive or HTML file, login to https://internetbanking.mebank.com.au
- Navigate to the account of your choice
- Scroll down and 'load more' until you reach the end of the transactions
- (Optional) Click on each transaction's dropdown arrow manually one-by-one, to gather detailed info from the dynamic accordion (time & date, receipt number, long description, to/from BSB account number)
- Save the page as .webarchive file or HTML to desired folder on disk
- Note you should not save 'page source', it is only the static HTML page prior to JavaScript loading the elements. You must save the active page HTML content
- Install python prerequisite
pip install bs4
- Run script
# JSON by default
python mebank_process.py `~/Downloads/ME Go - Internet Banking | Account.webarchive`
# CSV output piped to file
python mebank_process.py `~/Downloads/ME Go - Internet Banking | Account.webarchive` -o csv > ~/Downloads/transactions.csv
python mebank_process.py --help
usage: mebank_process.py [-h] [-o {json,csv}] filename
positional arguments:
filename HTML or webarchive file
options:
-h, --help show this help message and exit
-o {json,csv}, --output {json,csv}
# JSON
{
{
"id": "333e3a86-57f4-4c24-8a29-096722a0342e",
"type": "Local Mechanical Repa",
"amount": "-$46.19",
"from_summary": "",
"from_detail": "",
"to_summary": "",
"to_detail": "",
"date": "2024-03-19T14:22:00+11:00",
"description": "LOCAL MECHANICAL REPA",
"receipt": "FX2AB6DFXJSLH"
},
{
"id": "abce650a-18a5-472f-9e92-659f2675de7b",
"type": "Transfer",
"amount": "+$1,900.00",
"from_summary": "John Appleseed",
"from_detail": "John Appleseed",
"to_summary": "",
"to_detail": "062000 123456789",
"date": "2024-03-27T21:45:00+11:00",
"description": "Savings",
"receipt": "MEBX8FD98D6AHFH"
},
}
# CSV
id,type,amount,date,from_summary,from_detail,to_summary,to_detail,description,receipt
333e3a86-57f4-4c24-8a29-096722a0342e,Local Mechanical Repa,-$46.19,2024-03-19T14:22:00+11:00,,,,,LOCAL MECHANICAL REPA,FX2AB6DFXJSLH
abce650a-18a5-472f-9e92-659f2675de7b,Transfer,"+$1,900.00",2024-03-27T21:45:00+11:00,John Appleseed,John Appleseed,,062000 123456789,Savings,MEBX8FD98D6AHFH
- Must manually save the web page
- Must manually load each transaction's dynamic accordion in order to obtain complete transaction details
- No export to OFX (though I think the data source provides sufficient details to make a useful OFX)