|
C
|
ca
|
2026-09-08 01:01:07
|
2026-09-08 01:01:07
|
|
|
C
|
ca_ab
|
2026-09-08 01:09:44
|
2026-09-08 01:09:44
|
|
|
A
|
ca_ab_airdrie
|
2026-09-08 01:06:49
|
2026-09-08 01:06:49
|
|
|
A
|
ca_ab_banff
|
2026-09-08 01:16:54
|
2026-09-08 01:16:54
|
|
|
C
|
ca_ab_calgary
|
2026-09-08 01:13:31
|
2026-09-08 01:13:31
|
|
|
A
|
ca_ab_canmore
|
2026-09-08 00:48:40
|
2026-09-08 00:48:40
|
|
|
A
|
ca_ab_cochrane
|
2026-09-08 01:03:10
|
2026-09-08 01:03:10
|
|
D>
01:18:51 WARNING pupa: validation of Membership 3eff1ae0-ab23-11f1-b1a7-56b5fa2d7c6e failed: 1 validation errors:
Value '' for field '<obj>.contact_details[0].value' cannot be blank'
|
ca_ab_edmonton
|
2026-07-30 01:38:16
|
2026-09-08 01:18:51
|
Value '' for field '<obj>.contact_details[0].value' cannot be blank'
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 175, in validate
validator.validate(self.as_dict(), schema)
File "/usr/local/lib/python3.10/site-packages/validictory/validator.py", line 616, in validate
raise MultipleValidationError(self._errors)
validictory.validator.MultipleValidationError: 1 validation errors:
Value '' for field '<obj>.contact_details[0].value' cannot be blank'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 104, in do_scrape
self.save_object(obj)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 93, in save_object
self.save_object(obj)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 89, in save_object
raise ve
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 85, in save_object
obj.validate()
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 177, in validate
raise ScrapeValueError('validation of {} {} failed: {}'.format(
pupa.exceptions.ScrapeValueError: validation of Membership 3eff1ae0-ab23-11f1-b1a7-56b5fa2d7c6e failed: 1 validation errors:
Value '' for field '<obj>.contact_details[0].value' cannot be blank'
|
|
A
|
ca_ab_fort_saskatchewan
|
2026-09-08 01:12:59
|
2026-09-08 01:12:59
|
|
|
C
|
ca_ab_grande_prairie
|
2026-09-08 01:07:10
|
2026-09-08 01:07:10
|
|
|
C
|
ca_ab_grande_prairie_county_no_1
|
2026-09-08 01:01:33
|
2026-09-08 01:01:33
|
|
|
A
|
ca_ab_leduc
|
2026-09-08 00:48:38
|
2026-09-08 00:48:38
|
|
|
C
|
ca_ab_lethbridge
|
2026-09-08 01:11:23
|
2026-09-08 01:11:23
|
|
|
A
|
ca_ab_medicine_hat
|
2026-09-08 01:16:55
|
2026-09-08 01:16:55
|
|
|
A
|
ca_ab_okotoks
|
2026-09-08 01:02:46
|
2026-09-08 01:02:46
|
|
|
A
|
ca_ab_red_deer
|
2026-09-08 01:17:26
|
2026-09-08 01:17:26
|
|
|
A
|
ca_ab_spruce_grove
|
2026-09-08 01:03:09
|
2026-09-08 01:03:09
|
|
|
A
|
ca_ab_st_albert
|
2026-09-08 00:49:10
|
2026-09-08 00:49:10
|
|
|
C
|
ca_ab_strathcona_county
|
2026-09-08 01:09:45
|
2026-09-08 01:09:45
|
|
|
C
|
ca_ab_wood_buffalo
|
2026-09-08 01:13:38
|
2026-09-08 01:13:38
|
|
|
D>
|
ca_bc
|
2026-08-26 00:32:15
|
2026-09-08 00:46:56
|
TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_bc/people.py", line 56, in scrape
image = "https://lims.leg.bc.ca/public" + member["image"]["path"]
TypeError: 'NoneType' object is not subscriptable
|
|
C
|
ca_bc_abbotsford
|
2026-09-08 00:48:28
|
2026-09-08 00:48:28
|
|
|
C
|
ca_bc_burnaby
|
2026-09-08 00:47:12
|
2026-09-08 00:47:12
|
|
|
A
|
ca_bc_campbell_river
|
2026-09-08 01:15:06
|
2026-09-08 01:15:06
|
|
|
A
|
ca_bc_chilliwack
|
2026-09-08 01:01:19
|
2026-09-08 01:01:19
|
|
|
D>
|
ca_bc_coquitlam
|
2026-08-09 01:20:55
|
2026-09-08 01:10:00
|
AssertionError: No councillors found
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_bc_coquitlam/people.py", line 20, in scrape
assert len(councillors), "No councillors found"
AssertionError: No councillors found
|
|
A
|
ca_bc_courtenay
|
2026-09-08 01:11:53
|
2026-09-08 01:11:53
|
|
|
A
|
ca_bc_delta
|
2026-09-08 01:07:08
|
2026-09-08 01:07:08
|
|
|
A
|
ca_bc_kamloops
|
2026-09-08 00:49:14
|
2026-09-08 00:49:14
|
|
|
C
|
ca_bc_kelowna
|
2026-09-08 01:03:01
|
2026-09-08 01:03:01
|
|
|
A
|
ca_bc_langford
|
2026-09-08 01:12:08
|
2026-09-08 01:12:08
|
|
|
C
|
ca_bc_langley
|
2026-09-08 01:03:32
|
2026-09-08 01:03:32
|
|
|
C
|
ca_bc_langley_city
|
2026-09-08 01:24:05
|
2026-09-08 01:24:05
|
|
|
A
|
ca_bc_maple_ridge
|
2026-09-08 01:03:33
|
2026-09-08 01:03:33
|
|
|
A
|
ca_bc_mission
|
2026-09-08 01:09:46
|
2026-09-08 01:09:46
|
|
|
D>
|
ca_bc_nanaimo
|
2026-07-29 01:23:15
|
2026-09-08 01:18:40
|
AssertionError: Expected 9 council members
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_bc_nanaimo/people.py", line 16, in scrape
assert len(members) == 9, "Expected 9 council members"
AssertionError: Expected 9 council members
|
|
C
|
ca_bc_new_westminster
|
2026-09-08 01:13:17
|
2026-09-08 01:13:17
|
|
|
A
|
ca_bc_north_vancouver
|
2026-09-08 01:01:20
|
2026-09-08 01:01:20
|
|
|
A
|
ca_bc_north_vancouver_city
|
2026-09-08 00:48:36
|
2026-09-08 00:48:36
|
|
|
A
|
ca_bc_penticton
|
2026-09-08 00:44:14
|
2026-09-08 00:44:14
|
|
|
D>
|
ca_bc_port_coquitlam
|
2026-08-12 01:13:40
|
2026-09-08 01:15:18
|
AssertionError: Expected 7 council members
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_bc_port_coquitlam/people.py", line 13, in scrape
assert len(members) == 7, "Expected 7 council members"
AssertionError: Expected 7 council members
|
|
A
|
ca_bc_port_moody
|
2026-09-08 01:24:02
|
2026-09-08 01:24:02
|
|
|
A
|
ca_bc_prince_george
|
2026-09-08 01:11:54
|
2026-09-08 01:11:54
|
|
|
C
|
ca_bc_richmond
|
2026-09-08 01:13:11
|
2026-09-08 01:13:11
|
|
|
C
|
ca_bc_saanich
|
2026-09-08 00:47:00
|
2026-09-08 00:47:00
|
|
|
C
|
ca_bc_surrey
|
2026-09-08 01:10:16
|
2026-09-08 01:10:16
|
|
|
A
|
ca_bc_tofino
|
2026-09-08 01:18:43
|
2026-09-08 01:18:43
|
|
|
C
|
ca_bc_vancouver
|
2026-09-08 01:15:20
|
2026-09-08 01:15:20
|
|
|
A
|
ca_bc_vernon
|
2026-09-08 00:46:54
|
2026-09-08 00:46:54
|
|
|
C
|
ca_bc_victoria
|
2026-09-08 01:17:27
|
2026-09-08 01:17:27
|
|
|
A
|
ca_bc_west_kelowna
|
2026-09-08 01:14:05
|
2026-09-08 01:14:05
|
|
|
A
|
ca_bc_west_vancouver
|
2026-09-08 01:13:59
|
2026-09-08 01:13:59
|
|
|
A
|
ca_bc_whistler
|
2026-09-08 01:13:16
|
2026-09-08 01:13:16
|
|
D>
01:19:28 ERROR ca_candidates.people:
01:19:31 ERROR ca_candidates.people:
01:19:31 ERROR ca_candidates.people:
01:19:31 ERROR ca_candidates.people:
01:19:31 ERROR ca_candidates.people:
01:19:31 ERROR ca_candidates.people:
01:19:31 ERROR ca_candidates.people:
01:19:32 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/2 (https://www.greenparty.ca/en/candidates/page/2)
01:19:33 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/3 (https://www.greenparty.ca/en/candidates/page/3)
01:19:34 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/4 (https://www.greenparty.ca/en/candidates/page/4)
01:19:35 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/5 (https://www.greenparty.ca/en/candidates/page/5)
01:19:36 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/6 (https://www.greenparty.ca/en/candidates/page/6)
01:19:37 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/7 (https://www.greenparty.ca/en/candidates/page/7)
01:19:38 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/8 (https://www.greenparty.ca/en/candidates/page/8)
01:19:39 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/9 (https://www.greenparty.ca/en/candidates/page/9)
01:19:40 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/10 (https://www.greenparty.ca/en/candidates/page/10)
01:19:41 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/11 (https://www.greenparty.ca/en/candidates/page/11)
01:19:42 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/12 (https://www.greenparty.ca/en/candidates/page/12)
01:19:43 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/13 (https://www.greenparty.ca/en/candidates/page/13)
01:19:44 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/14 (https://www.greenparty.ca/en/candidates/page/14)
01:19:45 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/15 (https://www.greenparty.ca/en/candidates/page/15)
01:19:46 WARNING ca_candidates.people: 404 while retrieving https://www.greenparty.ca/en/candidates/page/16 (https://www.greenparty.ca/en/candidates/page/16)
01:19:51 WARNING scrapelib: got ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')) sleeping for 10 seconds before retry
01:21:01 WARNING scrapelib: got HTTPSConnectionPool(host='www.greenparty.ca', port=443): Max retries exceeded with url: /en/candidates/page/17 (Caused by ConnectTimeoutError(<HTTPSConnection(host='www.greenparty.ca', port=443) at 0xef96f23a7790>, 'Connection to www.greenparty.ca timed out. (connect timeout=60)')) sleeping for 20 seconds before retry
01:22:21 WARNING scrapelib: got HTTPSConnectionPool(host='www.greenparty.ca', port=443): Max retries exceeded with url: /en/candidates/page/17 (Caused by ConnectTimeoutError(<HTTPSConnection(host='www.greenparty.ca', port=443) at 0xef96f23a4100>, 'Connection to www.greenparty.ca timed out. (connect timeout=60)')) sleeping for 40 seconds before retry
01:24:02 WARNING ca_candidates.people: HTTPSConnectionPool(host='www.greenparty.ca', port=443): Max retries exceeded with url: /en/candidates/page/17 (Caused by ConnectTimeoutError(<HTTPSConnection(host='www.greenparty.ca', port=443) at 0xef96f23a5a50>, 'Connection to www.greenparty.ca timed out. (connect timeout=60)')) (https://www.greenparty.ca/en/candidates/page/17)
|
ca_candidates
|
2026-08-31 01:06:11
|
2026-09-08 01:24:02
|
AssertionError: No Green candidates found
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_candidates/people.py", line 162, in scrape
for p in getattr(self, f"scrape_{party}")():
File "/src/scrapers-ca-app/scrapers/ca_candidates/people.py", line 393, in scrape_green
assert len(candidates), "No Green candidates found"
AssertionError: No Green candidates found
|
|
C
|
ca_mb
|
2026-09-08 01:06:46
|
2026-09-08 01:06:46
|
|
|
A
|
ca_mb_brandon
|
2026-09-08 01:18:49
|
2026-09-08 01:18:49
|
|
|
C
|
ca_mb_winnipeg
|
2026-09-08 01:01:22
|
2026-09-08 01:01:22
|
|
|
C
|
ca_nb
|
2026-09-08 01:12:58
|
2026-09-08 01:12:58
|
|
|
A
|
ca_nb_dieppe
|
2026-09-08 01:15:07
|
2026-09-08 01:15:07
|
|
|
C
|
ca_nb_fredericton
|
2026-09-08 01:11:13
|
2026-09-08 01:11:13
|
|
|
C
|
ca_nb_moncton
|
2026-09-08 01:12:07
|
2026-09-08 01:12:07
|
|
|
C
|
ca_nb_saint_john
|
2026-09-08 01:13:45
|
2026-09-08 01:13:45
|
|
|
C
|
ca_nl
|
2026-09-08 00:46:56
|
2026-09-08 00:46:56
|
|
|
A
|
ca_nl_conception_bay_south
|
2026-09-08 00:48:39
|
2026-09-08 00:48:39
|
|
|
C
|
ca_nl_st_john_s
|
2026-09-08 00:47:25
|
2026-09-08 00:47:25
|
|
|
C
|
ca_ns
|
2026-09-08 01:08:14
|
2026-09-08 01:08:14
|
|
|
C
|
ca_ns_cape_breton
|
2026-09-08 01:10:51
|
2026-09-08 01:10:51
|
|
|
C
|
ca_ns_halifax
|
2026-09-08 01:24:26
|
2026-09-08 01:24:26
|
|
|
D>
|
ca_nt
|
2026-08-05 01:04:18
|
2026-09-08 01:10:33
|
IndexError: list index out of range
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_nt/people.py", line 74, in scrape
handle_address(p, address_section, "legislature")
File "/src/scrapers-ca-app/scrapers/ca_nt/people.py", line 42, in handle_address
+ contact.xpath('./div[contains(@class, "office-address-wrapper")]/div[2]/div[2]')[0]
IndexError: list index out of range
|
|
A
|
ca_nt_yellowknife
|
2026-09-08 00:46:53
|
2026-09-08 00:46:53
|
|
|
A
|
ca_nu
|
2026-09-08 01:14:32
|
2026-09-08 01:14:32
|
|
|
A
|
ca_nu_iqaluit
|
2026-09-08 01:16:53
|
2026-09-08 01:16:53
|
|
|
C
|
ca_on
|
2026-09-08 00:46:17
|
2026-09-08 00:46:17
|
|
|
C
|
ca_on_ajax
|
2026-09-08 01:14:47
|
2026-09-08 01:14:47
|
|
D>
01:17:28 WARNING scrapelib: sleeping for 10 seconds before retry
01:17:38 WARNING scrapelib: sleeping for 20 seconds before retry
01:17:58 WARNING scrapelib: sleeping for 40 seconds before retry
|
ca_on_barrie
|
2026-07-31 01:16:17
|
2026-09-08 01:18:38
|
scrapelib.HTTPError: 403 while retrieving https://www.barrie.ca/government/council-committees/city-council/mayor
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_on_barrie/people.py", line 13, in scrape
page = self.lxmlize(url)
File "/src/scrapers-ca-app/scrapers/utils.py", line 222, in lxmlize
response = self.get(url, cookies=cookies, verify=verify)
File "/src/scrapers-ca-app/scrapers/utils.py", line 203, in get
return super().get(*args, verify=kwargs.pop("verify", SSL_VERIFY), **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 605, in get
return self.request("GET", url, **kwargs)
File "/usr/local/lib/python3.10/site-packages/scrapelib/__init__.py", line 619, in request
raise HTTPError(resp)
scrapelib.HTTPError: 403 while retrieving https://www.barrie.ca/government/council-committees/city-council/mayor
|
|
C
|
ca_on_belleville
|
2026-09-08 01:18:48
|
2026-09-08 01:18:48
|
|
|
A
|
ca_on_bradford_west_gwillimbury
|
2026-09-08 01:13:00
|
2026-09-08 01:13:00
|
|
|
C
|
ca_on_brampton
|
2026-09-08 01:14:11
|
2026-09-08 01:14:11
|
|
|
C
|
ca_on_brantford
|
2026-09-08 01:18:46
|
2026-09-08 01:18:46
|
|
|
D>
|
ca_on_burlington
|
2026-07-28 00:54:13
|
2026-09-08 00:46:54
|
AssertionError: No councillors found
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_on_burlington/people.py", line 15, in scrape
assert len(councillors), "No councillors found"
AssertionError: No councillors found
|
|
C
|
ca_on_caledon
|
2026-09-08 00:46:51
|
2026-09-08 00:46:51
|
|
|
C
|
ca_on_cambridge
|
2026-09-08 01:24:27
|
2026-09-08 01:24:27
|
|
|
A
|
ca_on_centre_wellington
|
2026-09-08 01:14:33
|
2026-09-08 01:14:33
|
|
|
C
|
ca_on_chatham_kent
|
2026-09-08 01:05:43
|
2026-09-08 01:05:43
|
|
|
C
|
ca_on_clarington
|
2026-09-08 00:47:46
|
2026-09-08 00:47:46
|
|
|
A
|
ca_on_cornwall
|
2026-09-08 01:15:19
|
2026-09-08 01:15:19
|
|
|
C
|
ca_on_fort_erie
|
2026-09-08 01:07:09
|
2026-09-08 01:07:09
|
|
|
C
|
ca_on_georgina
|
2026-09-08 01:18:56
|
2026-09-08 01:18:56
|
|
|
C
|
ca_on_greater_sudbury
|
2026-09-08 01:13:59
|
2026-09-08 01:13:59
|
|
|
C
|
ca_on_grimsby
|
2026-09-08 01:03:35
|
2026-09-08 01:03:35
|
|
|
C
|
ca_on_guelph
|
2026-09-08 01:24:07
|
2026-09-08 01:24:07
|
|
|
C
|
ca_on_haldimand_county
|
2026-09-08 00:47:26
|
2026-09-08 00:47:26
|
|
|
A
|
ca_on_halton_hills
|
2026-09-08 01:07:11
|
2026-09-08 01:07:11
|
|
|
C
|
ca_on_hamilton
|
2026-09-08 01:15:05
|
2026-09-08 01:15:05
|
|
|
C
|
ca_on_huron
|
2026-09-08 00:44:06
|
2026-09-08 00:44:06
|
|
|
A
|
ca_on_innisfil
|
2026-09-08 01:13:12
|
2026-09-08 01:13:12
|
|
|
C
|
ca_on_kawartha_lakes
|
2026-09-08 01:18:54
|
2026-09-08 01:18:54
|
|
|
C
|
ca_on_king
|
2026-09-08 01:07:15
|
2026-09-08 01:07:15
|
|
|
C
|
ca_on_kingston
|
2026-09-08 01:19:25
|
2026-09-08 01:19:25
|
|
|
C
|
ca_on_kitchener
|
2026-09-08 01:13:31
|
2026-09-08 01:13:31
|
|
|
C
|
ca_on_lambton
|
2026-09-08 01:06:47
|
2026-09-08 01:06:47
|
|
|
C
|
ca_on_lasalle
|
2026-09-08 01:03:01
|
2026-09-08 01:03:01
|
|
|
C
|
ca_on_lincoln
|
2026-09-08 01:01:21
|
2026-09-08 01:01:21
|
|
|
C
|
ca_on_london
|
2026-09-08 01:07:12
|
2026-09-08 01:07:12
|
|
|
C
|
ca_on_markham
|
2026-09-08 00:47:42
|
2026-09-08 00:47:42
|
|
|
C
|
ca_on_milton
|
2026-09-08 01:19:03
|
2026-09-08 01:19:03
|
|
|
C
|
ca_on_mississauga
|
2026-09-08 01:14:46
|
2026-09-08 01:14:46
|
|
|
C
|
ca_on_newmarket
|
2026-09-08 01:11:55
|
2026-09-08 01:11:55
|
|
|
C
|
ca_on_niagara
|
2026-09-08 01:16:58
|
2026-09-08 01:16:58
|
|
|
A
|
ca_on_niagara_falls
|
2026-09-08 01:08:15
|
2026-09-08 01:08:15
|
|
|
C
|
ca_on_niagara_on_the_lake
|
2026-09-08 01:03:44
|
2026-09-08 01:03:44
|
|
|
A
|
ca_on_norfolk_county
|
2026-09-08 01:13:36
|
2026-09-08 01:13:36
|
|
|
A
|
ca_on_north_bay
|
2026-09-08 01:13:57
|
2026-09-08 01:13:57
|
|
|
C
|
ca_on_north_dumfries
|
2026-09-08 01:01:08
|
2026-09-08 01:01:08
|
|
|
D>
|
ca_on_oakville
|
2026-08-06 01:22:51
|
2026-09-08 01:16:56
|
Exception: No email node in b'<div class="card h-100">\n <div class="img-container">\n …
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_on_oakville/people.py", line 26, in scrape
email = self.get_email(councillor)
File "/src/scrapers-ca-app/scrapers/utils.py", line 143, in get_email
raise Exception(f"No email node in {etree.tostring(node)}")
Exception: No email node in b'<div class="card h-100">\n <div class="img-container">\n <img src="https://www.oakville.ca/getmedia/a72ece52-cdc9-4a10-a191-ad441c887431/570-Councillor-Grant.jpg?width=570&height=950&ext=.jpg" class="card-img-top" alt="Image of Councillor Marc Grant" title="Councillor Marc Grant"/>\n </div>\n <div class="card-body pt-3 pb-2 px-0">\n <div class="user-function">Ward 5 Town Councillor</div>\n <div class="user-name">Marc Grant</div>\n </div>\n <div class="my-2">\n <a href="https://www.oakville.ca/town-hall/mayor-council-administration/mayor-council/councillor-marc-grant/" title="Ward 5 Town Councillor" class="btn">Learn More</a>\n </div>\n </div>\n '
|
|
A
|
ca_on_orangeville
|
2026-09-08 01:07:07
|
2026-09-08 01:07:07
|
|
|
A
|
ca_on_orillia
|
2026-09-08 01:14:06
|
2026-09-08 01:14:06
|
|
|
C
|
ca_on_oshawa
|
2026-09-08 01:03:46
|
2026-09-08 01:03:46
|
|
|
C
|
ca_on_ottawa
|
2026-09-08 00:49:12
|
2026-09-08 00:49:12
|
|
|
C
|
ca_on_peel
|
2026-09-08 00:49:15
|
2026-09-08 00:49:15
|
|
|
A
|
ca_on_peterborough
|
2026-09-08 00:46:59
|
2026-09-08 00:46:59
|
|
|
C
|
ca_on_pickering
|
2026-09-08 01:03:44
|
2026-09-08 01:03:44
|
|
|
A
|
ca_on_prince_edward_county
|
2026-09-08 01:13:02
|
2026-09-08 01:13:03
|
|
|
C
|
ca_on_richmond_hill
|
2026-09-08 01:15:17
|
2026-09-08 01:15:17
|
|
|
A
|
ca_on_sarnia
|
2026-09-08 01:24:06
|
2026-09-08 01:24:06
|
|
|
C
|
ca_on_sault_ste_marie
|
2026-09-08 01:18:41
|
2026-09-08 01:18:41
|
|
|
C
|
ca_on_st_catharines
|
2026-09-08 01:14:08
|
2026-09-08 01:14:08
|
|
|
A
|
ca_on_stratford
|
2026-09-08 01:03:45
|
2026-09-08 01:03:45
|
|
|
A
|
ca_on_st_thomas
|
2026-09-08 00:47:44
|
2026-09-08 00:47:44
|
|
|
D>
|
ca_on_thunder_bay
|
2026-08-06 00:49:39
|
2026-09-08 00:48:26
|
ValueError: Unknown Thunder Bay councillor: Vacant Position
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_on_thunder_bay/people.py", line 61, in scrape
raise ValueError(f"Unknown Thunder Bay councillor: {name}")
ValueError: Unknown Thunder Bay councillor: Vacant Position
|
|
A
|
ca_on_timmins
|
2026-09-08 01:01:32
|
2026-09-08 01:01:32
|
|
|
C
|
ca_on_toronto
|
2026-09-08 01:18:44
|
2026-09-08 01:18:44
|
|
|
C
|
ca_on_uxbridge
|
2026-09-08 01:02:45
|
2026-09-08 01:02:45
|
|
|
D>
|
ca_on_vaughan
|
2026-08-10 00:40:29
|
2026-09-08 01:16:54
|
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://www.vaughan.ca/council
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_on_vaughan/people.py", line 11, in scrape
page = self.cloudscrape(COUNCIL_PAGE)
File "/src/scrapers-ca-app/scrapers/utils.py", line 210, in cloudscrape
response.raise_for_status()
File "/usr/local/lib/python3.10/site-packages/requests/models.py", line 1028, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://www.vaughan.ca/council
|
|
C
|
ca_on_waterloo
|
2026-09-08 01:14:05
|
2026-09-08 01:14:05
|
|
|
C
|
ca_on_waterloo_region
|
2026-09-08 00:49:02
|
2026-09-08 00:49:02
|
|
|
C
|
ca_on_welland
|
2026-09-08 01:15:08
|
2026-09-08 01:15:08
|
|
|
C
|
ca_on_wellesley
|
2026-09-08 01:24:08
|
2026-09-08 01:24:08
|
|
|
C
|
ca_on_whitby
|
2026-09-08 01:06:50
|
2026-09-08 01:06:50
|
|
|
C
|
ca_on_whitchurch_stouffville
|
2026-09-08 01:13:34
|
2026-09-08 01:13:34
|
|
|
D>
|
ca_on_wilmot
|
2026-08-26 00:57:06
|
2026-09-08 01:10:03
|
AssertionError: No councillors found
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_on_wilmot/people.py", line 55, in scrape
assert count, "No councillors found"
AssertionError: No councillors found
|
|
C
|
ca_on_windsor
|
2026-09-08 01:13:36
|
2026-09-08 01:13:36
|
|
|
A
|
ca_on_woodstock
|
2026-09-08 01:10:58
|
2026-09-08 01:10:58
|
|
|
C
|
ca_on_woolwich
|
2026-09-08 00:46:28
|
2026-09-08 00:46:28
|
|
|
C
|
ca_pe
|
2026-09-08 01:11:51
|
2026-09-08 01:11:51
|
|
|
C
|
ca_pe_charlottetown
|
2026-09-08 01:16:57
|
2026-09-08 01:16:57
|
|
|
C
|
ca_pe_stratford
|
2026-09-08 00:48:41
|
2026-09-08 00:48:41
|
|
|
D>
|
ca_pe_summerside
|
2026-09-02 01:22:17
|
2026-09-08 01:13:14
|
ValueError: not enough values to unpack (expected 2, got 1)
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_pe_summerside/people.py", line 30, in scrape
role, name = role_name.split(" ", 1)
ValueError: not enough values to unpack (expected 2, got 1)
|
D>
01:01:33 WARNING scrapelib: sleeping for 10 seconds before retry
01:01:43 WARNING scrapelib: sleeping for 20 seconds before retry
01:02:03 WARNING scrapelib: sleeping for 40 seconds before retry
01:02:44 WARNING pupa: could not save RunPlan, no successful runs of ocd-jurisdiction/country:ca/province:qc/legislature yet
|
ca_qc
|
|
2026-09-08 01:02:44
|
scrapelib.HTTPError: 403 while retrieving https://www.assnat.qc.ca/fr/deputes/index.html
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_qc/people.py", line 200, in scrape
page = self.lxmlize(COUNCIL_PAGE, user_agent=BROWSER_USER_AGENT, verify=False)
File "/src/scrapers-ca-app/scrapers/utils.py", line 222, in lxmlize
response = self.get(url, cookies=cookies, verify=verify)
File "/src/scrapers-ca-app/scrapers/utils.py", line 203, in get
return super().get(*args, verify=kwargs.pop("verify", SSL_VERIFY), **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 605, in get
return self.request("GET", url, **kwargs)
File "/usr/local/lib/python3.10/site-packages/scrapelib/__init__.py", line 619, in request
raise HTTPError(resp)
scrapelib.HTTPError: 403 while retrieving https://www.assnat.qc.ca/fr/deputes/index.html
|
|
A
|
ca_qc_alma
|
2026-09-08 01:13:35
|
2026-09-08 01:13:35
|
|
|
C
|
ca_qc_beaconsfield
|
2026-09-08 01:18:53
|
2026-09-08 01:18:53
|
|
D>
01:10:04 WARNING pupa: could not save RunPlan, no successful runs of ocd-jurisdiction/country:ca/csd:2473015/legislature yet
|
ca_qc_blainville
|
|
2026-09-08 01:10:04
|
pupa.exceptions.UnresolvedIdError: cannot resolve pseudo id to Post: ~{"label": "District d'Alen\u00e7on (no 8)", "organizat…
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 307, in do_handle
report['import'] = self.do_import(juris, args)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 211, in do_import
report.update(membership_importer.import_directory(datadir))
File "/usr/local/lib/python3.10/site-packages/pupa/importers/base.py", line 190, in import_directory
return self.import_data(json_stream())
File "/usr/local/lib/python3.10/site-packages/pupa/importers/base.py", line 227, in import_data
obj_id, what = self.import_item(data)
File "/usr/local/lib/python3.10/site-packages/pupa/importers/base.py", line 247, in import_item
data = self.prepare_for_db(data)
File "/usr/local/lib/python3.10/site-packages/pupa/importers/memberships.py", line 50, in prepare_for_db
data['post_id'] = self.post_importer.resolve_json_id(data['post_id'])
File "/usr/local/lib/python3.10/site-packages/pupa/importers/base.py", line 165, in resolve_json_id
raise UnresolvedIdError(errmsg)
pupa.exceptions.UnresolvedIdError: cannot resolve pseudo id to Post: ~{"label": "District d'Alen\u00e7on (no 8)", "organization__classification": "legislature", "role": "Conseiller"}
|
|
A
|
ca_qc_boisbriand
|
2026-09-08 00:46:58
|
2026-09-08 00:46:58
|
|
|
C
|
ca_qc_brossard
|
2026-09-08 01:10:37
|
2026-09-08 01:10:37
|
|
|
C
|
ca_qc_cote_saint_luc
|
2026-09-08 01:03:00
|
2026-09-08 01:03:00
|
|
|
C
|
ca_qc_dollard_des_ormeaux
|
2026-09-08 01:10:59
|
2026-09-08 01:10:59
|
|
|
C
|
ca_qc_dorval
|
2026-09-08 00:46:52
|
2026-09-08 00:46:52
|
|
|
A
|
ca_qc_drummondville
|
2026-09-08 01:10:56
|
2026-09-08 01:10:56
|
|
|
C
|
ca_qc_gatineau
|
2026-09-08 01:19:24
|
2026-09-08 01:19:24
|
|
|
A
|
ca_qc_granby
|
2026-09-08 00:48:40
|
2026-09-08 00:48:40
|
|
D>
01:18:57 WARNING pupa: could not save RunPlan, no successful runs of ocd-jurisdiction/country:ca/csd:2466102/legislature yet
|
ca_qc_kirkland
|
|
2026-09-08 01:18:57
|
IndexError: list index out of range
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_qc_kirkland/people.py", line 27, in scrape
name = councillor.xpath(".//strong/text()")[0]
IndexError: list index out of range
|
|
C
|
ca_qc_laval
|
2026-09-08 00:48:42
|
2026-09-08 00:48:42
|
|
|
D>
|
ca_qc_levis
|
2026-08-18 01:40:33
|
2026-09-08 01:15:05
|
AssertionError: No councillors found
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_qc_levis/people.py", line 30, in scrape
assert len(councillors), "No councillors found"
AssertionError: No councillors found
|
D>
01:15:42 WARNING scrapelib: got No connection adapters were found for 'mailto:mairie@longueuil.quebec' sleeping for 10 seconds before retry
01:15:52 WARNING scrapelib: got No connection adapters were found for 'mailto:mairie@longueuil.quebec' sleeping for 20 seconds before retry
01:16:12 WARNING scrapelib: got No connection adapters were found for 'mailto:mairie@longueuil.quebec' sleeping for 40 seconds before retry
|
ca_qc_longueuil
|
2026-07-13 01:00:54
|
2026-09-08 01:16:52
|
requests.exceptions.InvalidSchema: No connection adapters were found for 'mailto:mairie@longueuil.quebec'
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_qc_longueuil/people.py", line 40, in scrape
detail_page = self.lxmlize(detail_url, "utf-8")
File "/src/scrapers-ca-app/scrapers/utils.py", line 222, in lxmlize
response = self.get(url, cookies=cookies, verify=verify)
File "/src/scrapers-ca-app/scrapers/utils.py", line 203, in get
return super().get(*args, verify=kwargs.pop("verify", SSL_VERIFY), **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 605, in get
return self.request("GET", url, **kwargs)
File "/usr/local/lib/python3.10/site-packages/scrapelib/__init__.py", line 596, in request
resp = super().request(
File "/usr/local/lib/python3.10/site-packages/scrapelib/__init__.py", line 411, in request
resp = super().request(
File "/usr/local/lib/python3.10/site-packages/scrapelib/__init__.py", line 239, in request
return super().request(
File "/usr/local/lib/python3.10/site-packages/scrapelib/__init__.py", line 182, in request
raise exception_raised
File "/usr/local/lib/python3.10/site-packages/scrapelib/__init__.py", line 124, in request
resp = super().request(
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 592, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 700, in send
adapter = self.get_adapter(url=request.url)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 795, in get_adapter
raise InvalidSchema(f"No connection adapters were found for {url!r}")
requests.exceptions.InvalidSchema: No connection adapters were found for 'mailto:mairie@longueuil.quebec'
|
|
A
|
ca_qc_magog
|
2026-09-08 00:49:02
|
2026-09-08 00:49:02
|
|
|
C
|
ca_qc_mercier
|
2026-09-08 00:44:05
|
2026-09-08 00:44:05
|
|
|
A
|
ca_qc_mirabel
|
2026-09-08 01:13:29
|
2026-09-08 01:13:29
|
|
D>
01:11:53 WARNING pupa: validation of Membership 46fd7634-ab22-11f1-b1a7-56b5fa2d7c6e failed: 1 validation errors:
Value 'Cell. :\nFax : 514-868-3324' for field '' does not match regular expression '\A1 \d{3} \d{3}-\d{4}(?: x\d+)?\Z'
01:11:53 WARNING pupa: could not save RunPlan, no successful runs of ocd-jurisdiction/country:ca/csd:2466023/legislature yet
|
ca_qc_montreal
|
|
2026-09-08 01:11:53
|
Value 'Cell. :\nFax : 514-868-3324' for field '' does not match regular expression '\A1 \d{3} \d{3}-\d{4}(?: x\d+)?\Z'
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 175, in validate
validator.validate(self.as_dict(), schema)
File "/usr/local/lib/python3.10/site-packages/validictory/validator.py", line 616, in validate
raise MultipleValidationError(self._errors)
validictory.validator.MultipleValidationError: 1 validation errors:
Value 'Cell. :\nFax : 514-868-3324' for field '' does not match regular expression '\A1 \d{3} \d{3}-\d{4}(?: x\d+)?\Z'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 104, in do_scrape
self.save_object(obj)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 93, in save_object
self.save_object(obj)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 89, in save_object
raise ve
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 85, in save_object
obj.validate()
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 177, in validate
raise ScrapeValueError('validation of {} {} failed: {}'.format(
pupa.exceptions.ScrapeValueError: validation of Membership 46fd7634-ab22-11f1-b1a7-56b5fa2d7c6e failed: 1 validation errors:
Value 'Cell. :\nFax : 514-868-3324' for field '' does not match regular expression '\A1 \d{3} \d{3}-\d{4}(?: x\d+)?\Z'
|
|
C
|
ca_qc_montreal_est
|
2026-09-08 01:24:29
|
2026-09-08 01:24:29
|
|
|
C
|
ca_qc_pointe_claire
|
2026-09-08 00:48:45
|
2026-09-08 00:48:45
|
|
|
C
|
ca_qc_quebec
|
2026-09-08 01:03:33
|
2026-09-08 01:03:33
|
|
|
A
|
ca_qc_repentigny
|
2026-09-08 01:07:06
|
2026-09-08 01:07:06
|
|
|
A
|
ca_qc_rimouski
|
2026-09-08 01:24:04
|
2026-09-08 01:24:04
|
|
|
A
|
ca_qc_rouyn_noranda
|
2026-09-08 01:10:57
|
2026-09-08 01:10:57
|
|
|
C
|
ca_qc_saguenay
|
2026-09-08 00:46:33
|
2026-09-08 00:46:33
|
|
|
C
|
ca_qc_sainte_anne_de_bellevue
|
2026-09-08 01:07:16
|
2026-09-08 01:07:16
|
|
|
A
|
ca_qc_sainte_julie
|
2026-09-08 01:14:48
|
2026-09-08 01:14:48
|
|
|
A
|
ca_qc_saint_eustache
|
2026-09-08 01:05:44
|
2026-09-08 01:05:44
|
|
|
A
|
ca_qc_saint_georges
|
2026-09-08 01:10:05
|
2026-09-08 01:10:05
|
|
|
D>
|
ca_qc_saint_hyacinthe
|
2026-07-30 01:00:58
|
2026-09-08 00:48:27
|
requests.exceptions.SSLError: HTTPSConnectionPool(host='www.st-hyacinthe.ca', port=443): Max retries exceeded with url: /vil…
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 1106, in _validate_conn
conn.connect()
File "/usr/local/lib/python3.10/site-packages/urllib3/connection.py", line 796, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "/usr/local/lib/python3.10/site-packages/urllib3/connection.py", line 975, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "/usr/local/lib/python3.10/site-packages/urllib3/util/ssl_.py", line 433, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "/usr/local/lib/python3.10/site-packages/urllib3/util/ssl_.py", line 477, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "/usr/local/lib/python3.10/ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "/usr/local/lib/python3.10/ssl.py", line 1104, in _create
self.do_handshake()
File "/usr/local/lib/python3.10/ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1017)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 788, in urlopen
response = self._make_request(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 488, in _make_request
raise new_e
urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1017)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 645, in send
resp = conn.urlopen(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 842, in urlopen
retries = retries.increment(
File "/usr/local/lib/python3.10/site-packages/urllib3/util/retry.py", line 543, in increment
raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.st-hyacinthe.ca', port=443): Max retries exceeded with url: /ville/vie-democratique/conseil-municipal (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1017)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/src/scrapers-ca-app/reports/utils.py", line 73, in scrape_people
report.report = subcommand.handle(args, other)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 260, in handle
return self.do_handle(args, other, juris)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 305, in do_handle
report['scrape'] = self.do_scrape(juris, args, scrapers)
File "/usr/local/lib/python3.10/site-packages/pupa/cli/commands/update.py", line 173, in do_scrape
report[scraper_name] = scraper.do_scrape(**scrape_args)
File "/usr/local/lib/python3.10/site-packages/pupa/scrape/base.py", line 99, in do_scrape
for obj in self.scrape(**kwargs) or []:
File "/src/scrapers-ca-app/scrapers/ca_qc_saint_hyacinthe/people.py", line 12, in scrape
page = self.lxmlize(COUNCIL_PAGE)
File "/src/scrapers-ca-app/scrapers/utils.py", line 222, in lxmlize
response = self.get(url, cookies=cookies, verify=verify)
File "/src/scrapers-ca-app/scrapers/utils.py", line 203, in get
return super().get(*args, verify=kwargs.pop("verify", SSL_VERIFY), **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 605, in get
return self.request("GET", url, **kwargs)
File "/usr/local/lib/python3.10/site-packages/scrapelib/__init__.py", line 596, in request
resp = super().request(
File "/usr/local/lib/python3.10/site-packages/scrapelib/__init__.py", line 411, in request
resp = super().request(
File "/usr/local/lib/python3.10/site-packages/scrapelib/__init__.py", line 239, in request
return super().request(
File "/usr/local/lib/python3.10/site-packages/scrapelib/__init__.py", line 124, in request
resp = super().request(
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 592, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/sessions.py", line 706, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.10/site-packages/requests/adapters.py", line 676, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='www.st-hyacinthe.ca', port=443): Max retries exceeded with url: /ville/vie-democratique/conseil-municipal (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1017)')))
|
|
C
|
ca_qc_saint_jean_sur_richelieu
|
2026-09-08 01:02:59
|
2026-09-08 01:02:59
|
|
|
C
|
ca_qc_saint_jerome
|
2026-09-08 00:48:44
|
2026-09-08 00:48:44
|
|
|
A
|
ca_qc_salaberry_de_valleyfield
|
2026-09-08 00:48:26
|
2026-09-08 00:48:26
|
|
|
C
|
ca_qc_senneville
|
2026-09-08 01:02:44
|
2026-09-08 01:02:44
|
|
|
A
|
ca_qc_sept_iles
|
2026-09-08 01:07:10
|
2026-09-08 01:07:10
|
|
|
A
|
ca_qc_shawinigan
|
2026-09-08 01:09:59
|
2026-09-08 01:09:59
|
|
|
C
|
ca_qc_sherbrooke
|
2026-09-08 01:05:23
|
2026-09-08 01:05:23
|
|
|
A
|
ca_qc_sorel_tracy
|
2026-09-08 01:05:46
|
2026-09-08 01:05:46
|
|
|
C
|
ca_qc_terrebonne
|
2026-09-08 01:17:16
|
2026-09-08 01:17:16
|
|
|
A
|
ca_qc_thetford_mines
|
2026-09-08 01:10:02
|
2026-09-08 01:10:02
|
|
|
C
|
ca_qc_trois_rivieres
|
2026-09-08 01:04:02
|
2026-09-08 01:04:02
|
|
|
A
|
ca_qc_val_dor
|
2026-09-08 01:13:01
|
2026-09-08 01:13:01
|
|
|
A
|
ca_qc_vaudreuil_dorion
|
2026-09-08 00:46:27
|
2026-09-08 00:46:27
|
|
|
A
|
ca_qc_victoriaville
|
2026-09-08 00:49:13
|
2026-09-08 00:49:13
|
|
|
C
|
ca_qc_westmount
|
2026-09-08 01:05:47
|
2026-09-08 01:05:47
|
|
|
C
|
ca_sk
|
2026-09-08 01:05:05
|
2026-09-08 01:05:05
|
|
|
C
|
ca_sk_regina
|
2026-09-08 01:03:22
|
2026-09-08 01:03:22
|
|
|
C
|
ca_sk_saskatoon
|
2026-09-08 00:48:16
|
2026-09-08 00:48:16
|
|
|
C
|
ca_yt
|
2026-09-08 01:03:36
|
2026-09-08 01:03:36
|
|
|
A
|
ca_yt_whitehorse
|
2026-09-08 01:24:26
|
2026-09-08 01:24:26
|
|