A Python toolkit for downloading and extracting textual data from the NSW CaseLaw website at https://www.caselaw.nsw.gov.au/
Sample usage in Python code or a Jupyter notebook
from nswcaselaw.search import Search
import json
query = Search(courts=[13], catchwords="succession")
for decision in query.results():
decision.fetch()
print(json.dumps(decision.values, indent=2))
url = query.url
To generate a CSV of search results
nswcaselaw --courts 13 --catchwords succession --output cases.csv
To download complete decisions as JSON documents
nswcaselaw --courts 13 --catchwords succession --output cases.csv --download ./decisions
To list available courts and tribunals (NOTE: full web scraping is only tested on Supreme Court decisions)
nswcaselaw --list courts
nswcaselaw --list tribunals
Command-line parameters:
-h, --help show help message and exit
--version show program's version number and exit
-v, --verbose set loglevel to INFO
-vv, --very-verbose set loglevel to DEBUG
--list {courts,tribunals}
Print a list of courts or tribunals
--dump DUMP Dir to dump HTML for debugging
--test-parse TEST_PARSE
Test scraper on an HTML document and print results as
JSON
--body BODY Full text search
--title TITLE Case name
--before BEFORE
--catchwords CATCHWORDS
--party PARTY
--citation CITATION This must include square brackets
--startDate STARTDATE
Earliest decision date
--endDate ENDDATE Lastest decision date
--fileNumber FILENUMBER
--legislationCited LEGISLATIONCITED
--casesCited CASESCITED
--pause PAUSE Seconds to wait between requests: default 10
--courts COURTS [COURTS ...]
Select one or more by index number (see --list courts)
--tribunals TRIBUNALS [TRIBUNALS ...]
Select one or more by index number (see --list
tribunals)
--uris URIS CSV file with caselaw URIs to download
--output OUTPUT Search results will be written to this file as CSV
--download DOWNLOAD Save decisions as JSON to the directory DOWNLOAD
--limit LIMIT Max results
Follow the instructions at https://docs.conda.io/projects/conda/en/latest/user-guide/install/download.html to install Conda.
To create a conda environment with Jupyter and nswcaselaw
conda create -n mycaselaw jupyter
conda activate mycaselaw
pip install nswcaselaw
Once the dependencies are installed
jupyter notebook
will start Jupyter and open a browser. Any notebooks you create in this will be able to import the nswcaselaw module as shown above
from nswcaselaw.search import Search
To install nswcaselaw without Jupyter, follow the same steps to install Conda, and then create a new environment as follows
conda create -n mycaselaw
conda activate mycaselaw
pip install nswcaselaw
You should now be able to use the nswcaselaw
command from a terminal (on
Mac or Linux) or the Anaconda prompt (on Windows).
This project is partially funded by a 2022 University of Sydney Research Accelerator (SOAR) Prize awarded to Ben Chen.
This project has been set up using PyScaffold 4.3. For details and usage information on PyScaffold see https://pyscaffold.org/.