Skip to content

Node.js scraper that enables automated on-demand report generation and email delivery using GlobalGiving data

Notifications You must be signed in to change notification settings

luveenw/vfaes_globalgiving_scraper

Repository files navigation

GlobalGiving Report Data Scraper

I freelance for Voice for Asian Elephants Society (VFAES), a wildlife conservation nonprofit working to protect the threatened Asian elephant in India. The team had a pain point with their donor data reporting. Their earnings are spread across a variety of donor management platforms, one of which is GlobalGiving.

Collecting donor emails in GlobalGiving's web interface is a days-long manual process. They don't make the information available for download in their reports either. This project instructs a web scraper to log in to Global Giving using VFAES' account information (managed via a hidden secrets file in this Glitch project), and collects donor information to generate an on-demand report in minutes.

Usage

This tool is only usable by VFAES team members that can access their GlobalGiving account.

  1. Head to the project website and follow the instructions to get set up for solving the GlobalGiving login captcha.
  2. Specify the date range for which donor data is desired and submit the form.
  3. Donor data will be generated and emailed to a pre-defined list of recipients once it is ready, which typically takes under 10 minutes for recent date ranges.

Implementation Details

  1. The nodejs code handles presenting the login captcha and solving it via a combination of Puppeteer plugins including ReCaptcha and stealth.
  2. The captcha is presented to my 2captcha account, which is set to sandbox mode, so can only be solved manually by myself or a team member I have shared this account's access key with.
  3. Custom processors handle each column of data presented in the GlobalGiving UI. The processors are run using an Observer pattern. This makes it very easy to customize what columns ultimately end up in the report, for example by aggregating multiple columns in the UI, or conditionally processing column data.

About

Node.js scraper that enables automated on-demand report generation and email delivery using GlobalGiving data

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published