This pure Python tool web scrapes data from Vox Charta's My Voting Records page. It provides the data contents in two forms, a non-relational JSON file and relational CSV file.
This software was driven by the need to archive such records since Vox Charta will be sunsetted on December 31, 2020.
These instructions will have the code running.
This software is tested with 3.10.2, the latest version available during recent development.
In principle it should work with >=3.7. It requires BeautifulSoup4
and pandas
.
Using your preferred Python environment manager (conda
, virtualenv
, venv
),
I recommend create a separate environment to avoid any possible conflicts with
existing software that you used. Below are conda
instructions
$ (sudo) conda create -n voxcharta python=3.10.2
Installation is straightforward:
$ conda activate voxcharta
$ (sudo) pip install voxcharta-my-voting-record
Or from source:
$ conda activate voxcharta
$ git clone https://github.com/astrochun/voxcharta-my-voting-record.git
$ cd voxcharta-my-voting-record
$ (sudo) pip install .
For editable/development installation, execute (sudo) pip install -e .
This is preferred over the python setup.py
method as certain dependencies (numpy
) will fail to install during the build process.
Before using this software, you will want to export your Vox Charta My Voting Records page. Here are the steps. These are based on Chrome, so differences may occur for other browsers:
- Login to Vox Charta before you can't!
- Click on "Tools > My Voting Records"
- After the page fully loads (this can take some time), click "File > Save Page As"
- Change filename to "myvotingrecords"
- For format, select "Webpage, Complete"
The primary script to execute is vox_run
Execution requires only one argument, which is the full path to the HTML file.
$ vox_run /full/path/to/myvotingrecords.htm
This is all possible using Typer
.
The script provides rich-formatted log messages to the terminal using Rich
.
All contents are stored in /full/path/to
unless outfile_prefix
is specified
with a different path. Thus, without specifying outfile_prefix
the above execution
will generate:
- JSON:
/full/path/to/myvotingrecords.json
- CSV:
/full/path/to/myvotingrecords.csv
A log file is constructed: /full/path/to/vox_run.YYYY-MM-DD.log
We use SemVer for versioning. For the versions available, see the releases on this repository.
- Chun Ly, Ph.D. (@astrochun)
This project is licensed under the GNU GPLv3 License - see the LICENSE file for details.