6 releases
Uses new Rust 2024
| 1.0.0-beta.7 | Feb 26, 2026 |
|---|---|
| 1.0.0-beta.6 | Feb 24, 2026 |
| 1.0.0-beta.5 | Feb 22, 2026 |
| 1.0.0-beta.3 | Feb 21, 2026 |
| 1.0.0-beta.2 | Feb 20, 2026 |
#2226 in Parser implementations
Used in 2 crates
370KB
3K
SLoC
odnelazm
The core mzalendo.com hansard scraper and parser.
Usage
Archive (info.mzalendo.com)
use odnelazm::archive::WebScraper;
let scraper = WebScraper::new()?;
// list all available sittings
let listings = scraper.fetch_hansard_list().await?;
// fetch a sitting transcript
let sitting = scraper.fetch_hansard_sitting("https://info.mzalendo.com/hansard/sitting/senate/2020-12-29-14-30-00", false).await?;
// fetch a person's profile
let person = scraper.fetch_person_details("/person/farhiya-ali-haji/").await?;
Current (mzalendo.com/democracy-tools)
use odnelazm::current::WebScraper;
use odnelazm::House;
let scraper = WebScraper::new()?;
// list one page of sittings, optionally filtered by house
let listings = scraper.fetch_hansard_list(1, Some(House::Senate)).await?;
// fetch all sittings across all pages
let all = scraper.fetch_all_sittings(None).await?;
// fetch a sitting transcript
let sitting = scraper.fetch_hansard_sitting("thursday-12th-february-2026-afternoon-sitting-2438").await?;
// list members
let members = scraper.fetch_members(House::NationalAssembly, "13th-parliament", 1).await?;
// fetch a member profile (with all activity and bills pages)
let profile = scraper.fetch_member_profile(
"https://mzalendo.com/mps-performance/national-assembly/13th-parliament/boss-gladys-jepkosgei/",
true, // fetch_all_activity
true, // fetch_all_bills
).await?;
Dependencies
~9–18MB
~306K SLoC