ianheggie-oaf / multiple_civica

Scrapes multiple authorities with the civica system


This is a scraper that runs on Morph. To get started see the documentation

Add any issues to https://github.com/planningalerts-scrapers/issues/issues

To run the scraper

bash bundle exec ruby scraper.rb

To run the tests

bash bundle exec rake OR bash bin/rake

Running under morph.io

Some of the authorities require an Australia proxy, specifically:

  • albury - execution expired error - trying timeout: 45
  • bega_valley - execution expired error - trying timeout: 45
  • bundaberg - ERROR: 403 => Net::HTTPForbidden for https://da.bundaberg.qld.gov.au/ -- unhandled response
  • port_stephens - execution expired - trying timeout: 45

I have created the down_under project for my own australian proxy. You are free to use my project, but you will need to pay for your own linode VPS.

Set MORPH_AUSTRALIA_PROXY to the proxy setting reported by bin/status

To force testing using fresh cache of external sites

Testing is performed using a cached copy of the external sites. Clobber the cache to force testing against recent copies of external site results.

bash bundle exec rake clobber_cache OR bash bin/rake clobber_cache

Report on morph.io dev/test and live status pages

bash bin/rake morph_status:report

Produces a table report by authority of:

  • Week, Month, Population, Warning - from Morph.io Live Status Page
  • Test - local spec/expected/AUTHORITY.yml record count
  • Morph - records collected by test of this repo on Morph.io

And then a Summary by Status detailing recommended Actions to Take

You will need to set an environment variable (eg via .envrc file and direnv command): * MORPHAPIKEY - so the report can query the database updated on morph.io by your local repository

To run style and coding checks

bash bundle exec rubocop

Available filters

Optionally set the following ENV variables before running scraper.rb or tests:

  • LIMIT=5 - to limit the number of records to 5 (for example) for quick test (different cache files used)
  • AUTHORITIES=name,name - to run/test with a subset of authorities
  • DEBUG=1 - to show the GET and POST calls to the external site
  • FAIL_FAST=1 - to make spec stop on first failure
  • UNKNOWN_IS_NOT_FATAL=1 - for when you get sick of adding all the new determinations one test run at a time

What a Masterview website looks like

Sign up

(To update this screenshot run bundle exec rake screenshots)

Contributors mlandauer tseyiokorodudu ianheggie-oaf

Last run failed with status code 1.

Console output of last run

Injecting configuration and compiling... Injecting scraper and running... Scraping authorities: bayside, bunbury, burwood, cairns, dorset, lane_cove, nambucca, orange, vincent, wanneroo, whittlesea, woollahra at 2025-02-05 07:30:30 +0000 Collecting feed data for bayside at 2025-02-05 07:30:30 +0000 ... Collecting feed data for bunbury at 2025-02-05 07:30:31 +0000 ... bayside: ERROR: Couldn't find form daEnquiryForm after 0.8 seconds /app/lib/civica_scraper/page/search.rb:10:in `period' /app/lib/civica_scraper.rb:105:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:38:in `<main>' Collecting feed data for burwood at 2025-02-05 07:30:31 +0000 ... bunbury: ERROR: 503 "Service Unavailable" after 0.5 seconds /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http/response.rb:122:in `error!' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http/response.rb:131:in `value' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:958:in `connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:920:in `do_start' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:915:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:655:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:595:in `connection_for' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:885:in `request' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:280:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:38:in `<main>' Collecting feed data for cairns at 2025-02-05 07:30:32 +0000 ... burwood: ERROR: 500 => Net::HTTPInternalServerError for https://ecouncil.burwood.nsw.gov.au/eservice/daEnquiryInit.do?doc_typ=10&nodeNum=219 -- unhandled response after 1.2 seconds /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:329:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:38:in `<main>' Saving record 13269/2025, 26 Ayla Court EDMONTON QLD 4869 Saving record 13258/2025, 18 Bouganvillea Street HOLLOWAYS BEACH QLD 4878 Saving record 13244/2025, 139-149 Bruce Highway EDMONTON QLD 4869 Saving record 13247/2025, 17 Cayley Street TRINITY BEACH QLD 4879 Saving record 13275/2025, 42 Clare Street PARRAMATTA PARK QLD 4870 Saving record 13254/2025, 5 Collins Avenue EDGE HILL QLD 4870 Saving record 13272/2025, 17 Dowsett Close YORKEYS KNOB QLD 4878 Saving record 13267/2025, 18 Edgar Street BUNGALOW QLD 4870 Saving record 13249/2025, 1-3 Frond Close REDLYNCH QLD 4870 Saving record 13243/2025, 59 Greenbank Road AEROGLEN QLD 4870 Saving record 13260/2025, 3L Hickling Access GORDONVALE QLD 4865 Saving record 13262/2025, 237-243 Howard Kennedy Drive BABINDA QLD 4861 Saving record 13273/2025, 1 Kidston Street BUNGALOW QLD 4870 Saving record 13250/2025, Unit 5 87-91 Lake Street CAIRNS CITY QLD 4870 Saving record 13253/2025, 24 Lapwing Place SMITHFIELD QLD 4878 Saving record 13246/2025, 107-111 Louie Piccone Way EDMONTON QLD 4869 Saving record 13257/2025, Maher Road GORDONVALE QLD 4865 Saving record 13251/2025, Unit 4 362 McCoombe Street MOOROOBOOL QLD 4870 Saving record 13252/2025, Unit 6 201-203 McLeod Street CAIRNS NORTH QLD 4870 Saving record 13274/2025, 16 Mooney Court SMITHFIELD QLD 4878 Saving record 13259/2025, 3000L Moorinya Circuit MOUNT PETER QLD 4869 Saving record 13261/2025, Unit 1 26-28 Mt Milman Drive SMITHFIELD QLD 4878 Saving record 13265/2025, Mt Peter Road MOUNT PETER QLD 4869 Saving record 13248/2025, 14 Myra Close BENTLEY PARK QLD 4869 Saving record 13270/2025, 39 Reefsedge Way KEWARRA BEACH QLD 4879 Saving record 13245/2025, 41 Reefsedge Way KEWARRA BEACH QLD 4879 Saving record 13266/2025, 701L Seclusion Drive PALM COVE QLD 4879 Saving record 13264/2025, 23-25 Shields Street CAIRNS CITY QLD 4870 Saving record 13255/2025, 35-41 Skull Road WHITE ROCK QLD 4868 Saving record 13263/2025, 160 Stanton Road SMITHFIELD QLD 4878 Saving record 13271/2025, 2 Starling Street KEWARRA BEACH QLD 4879 Saving record 13268/2025, Unit 33 7 Tari Place TRINITY BEACH QLD 4879 Saving record 13242/2025, 175-177 Wiseman Road West EDMONTON QLD 4869 Saving record 13256/2025, 203 Wiseman Road West EDMONTON QLD 4869 Collecting feed data for dorset at 2025-02-05 07:30:38 +0000 ... Collecting feed data for lane_cove at 2025-02-05 07:30:39 +0000 ... dorset: ERROR: Couldn't find form daEnquiryForm after 1.4 seconds /app/lib/civica_scraper/page/search.rb:10:in `period' /app/lib/civica_scraper.rb:105:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:38:in `<main>' Collecting feed data for nambucca at 2025-02-05 07:30:52 +0000 ... lane_cove: ERROR: Unknown stage_description: DPE Information Received after 13.2 seconds /app/lib/civica_scraper/page/detail.rb:69:in `extract_event' /app/lib/civica_scraper/page/detail.rb:79:in `block in extract_notification_period' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:239:in `block in each' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `upto' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `each' /app/lib/civica_scraper/page/detail.rb:77:in `map' /app/lib/civica_scraper/page/detail.rb:77:in `extract_notification_period' /app/lib/civica_scraper/page/detail.rb:11:in `scrape' /app/lib/civica_scraper.rb:128:in `block in scrape_period' /app/lib/civica_scraper/page/index.rb:14:in `block in scrape' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:239:in `block in each' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `upto' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `each' /app/lib/civica_scraper/page/index.rb:10:in `scrape' /app/lib/civica_scraper.rb:109:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:38:in `<main>' Collecting feed data for orange at 2025-02-05 07:30:53 +0000 ... nambucca: ERROR: 500 => Net::HTTPInternalServerError for https://eservices.nambucca.nsw.gov.au/eservice/daEnquiryInit.do?doc_typ=10&nodeNum=2811 -- unhandled response after 0.9 seconds /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:329:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:38:in `<main>' Collecting feed data for vincent at 2025-02-05 07:30:55 +0000 ... orange: ERROR: 500 => Net::HTTPInternalServerError for https://ecouncil.orange.nsw.gov.au/eservice/daEnquiryInit.do?nodeNum=24 -- unhandled response after 2.1 seconds /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:329:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:38:in `<main>' Saving record 14/2025, 48 Auckland Street NORTH PERTH WA 6006 Saving record 19/2025, 442-446 Beaufort Street HIGHGATE WA 6003 Saving record 18/2025, 19B Burt Street MOUNT LAWLEY WA 6050 Saving record 30/2025, 19B Burt Street MOUNT LAWLEY WA 6050 Saving record 17/2025, 414 Charles Street NORTH PERTH WA 6006 Saving record 27/2025, 22 East Street MOUNT HAWTHORN WA 6016 Saving record 13/2025, 3 Fiore Lane NORTH PERTH WA 6006 Saving record 22/2025, 20A Hammond Street WEST PERTH WA 6005 Saving record 21/2025, 20 Knutsford Street NORTH PERTH WA 6006 Saving record 9/2025, 129 Loftus Street LEEDERVILLE WA 6007 Saving record 7/2025, 41 Matlock Street MOUNT HAWTHORN WA 6016 Saving record 20/2025, 188 Newcastle Street PERTH WA 6000 Saving record 5/2025, 33A Pakenham Street MOUNT LAWLEY WA 6050 Saving record 31/2025, 129-131 Raglan Road NORTH PERTH WA 6006 Saving record 12/2025, 141 Raglan Road NORTH PERTH WA 6006 Saving record 25/2025, 66 Redfern Street NORTH PERTH WA 6006 Saving record 10/2025, 28 Richmond Street NORTH PERTH WA 6006 Saving record 23/2025, 38 Shakespeare Street MOUNT HAWTHORN WA 6016 Saving record 4/2025, 136 Shakespeare Street MOUNT HAWTHORN WA 6016 Saving record 29/2025, Summers Street EAST PERTH WA 6004 Saving record 8/2025, 39 Victoria Street WEST PERTH WA 6005 Saving record 24/2025, 41 Victoria Street WEST PERTH WA 6005 Saving record 26/2025, 21 Vincent Street MOUNT LAWLEY WA 6050 Saving record 28/2025, 188 Vincent Street NORTH PERTH WA 6006 Saving record 11/2025, 71-77 Walcott Street MOUNT LAWLEY WA 6050 Saving record 16/2025, 99 Walcott Street MOUNT LAWLEY WA 6050 Saving record 6/2025, Unit 9 583 William Street MOUNT LAWLEY WA 6050 Saving record 15/2025, 127 Wright Street HIGHGATE WA 6003 Collecting feed data for wanneroo at 2025-02-05 07:31:08 +0000 ... Collecting feed data for whittlesea at 2025-02-05 07:31:08 +0000 ... wanneroo: ERROR: 500 => Net::HTTPInternalServerError for https://eservice.wanneroo.wa.gov.au/eservice/daEnquiry.do?nodeNum=8047 -- unhandled response after 0.9 seconds /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:329:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:38:in `<main>' whittlesea: ERROR: execution expired after 60.0 seconds Collecting feed data for woollahra at 2025-02-05 07:32:08 +0000 ... /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `initialize' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `open' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `block in connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/timeout.rb:103:in `timeout' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:935:in `connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:920:in `do_start' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:915:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:655:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:595:in `connection_for' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:885:in `request' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:280:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:38:in `<main>' woollahra: ERROR: Unknown stage_description: Planning Portal Counter Check after 13.9 seconds /app/lib/civica_scraper/page/detail.rb:69:in `extract_event' /app/lib/civica_scraper/page/detail.rb:79:in `block in extract_notification_period' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:239:in `block in each' *************************************************** Now retrying authorities which earlier had failures at 2025-02-05 07:32:22 +0000: bayside, bunbury, burwood, dorset, lane_cove, nambucca, orange, wanneroo, whittlesea, woollahra *************************************************** Collecting feed data for bayside at 2025-02-05 07:32:22 +0000 ... /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `upto' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `each' /app/lib/civica_scraper/page/detail.rb:77:in `map' /app/lib/civica_scraper/page/detail.rb:77:in `extract_notification_period' /app/lib/civica_scraper/page/detail.rb:11:in `scrape' /app/lib/civica_scraper.rb:128:in `block in scrape_period' /app/lib/civica_scraper/page/index.rb:14:in `block in scrape' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:239:in `block in each' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `upto' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `each' /app/lib/civica_scraper/page/index.rb:10:in `scrape' /app/lib/civica_scraper.rb:109:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:38:in `<main>' Collecting feed data for bunbury at 2025-02-05 07:32:23 +0000 ... bayside: ERROR: Couldn't find form daEnquiryForm after 0.8 seconds /app/lib/civica_scraper/page/search.rb:10:in `period' /app/lib/civica_scraper.rb:105:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:47:in `<main>' bunbury: ERROR: 503 "Service Unavailable" after 0.5 seconds Collecting feed data for burwood at 2025-02-05 07:32:24 +0000 ... /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http/response.rb:122:in `error!' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http/response.rb:131:in `value' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:958:in `connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:920:in `do_start' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:915:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:655:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:595:in `connection_for' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:885:in `request' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:280:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:47:in `<main>' Collecting feed data for dorset at 2025-02-05 07:32:25 +0000 ... burwood: ERROR: 500 => Net::HTTPInternalServerError for https://ecouncil.burwood.nsw.gov.au/eservice/daEnquiryInit.do?doc_typ=10&nodeNum=219 -- unhandled response after 1.0 seconds /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:329:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:47:in `<main>' Collecting feed data for lane_cove at 2025-02-05 07:32:26 +0000 ... dorset: ERROR: Couldn't find form daEnquiryForm after 1.2 seconds /app/lib/civica_scraper/page/search.rb:10:in `period' /app/lib/civica_scraper.rb:105:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:47:in `<main>' lane_cove: ERROR: Unknown stage_description: DPE Information Received after 11.8 seconds /app/lib/civica_scraper/page/detail.rb:69:in `extract_event' /app/lib/civica_scraper/page/detail.rb:79:in `block in extract_notification_period' Collecting feed data for nambucca at 2025-02-05 07:32:38 +0000 ... /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:239:in `block in each' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `upto' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `each' /app/lib/civica_scraper/page/detail.rb:77:in `map' /app/lib/civica_scraper/page/detail.rb:77:in `extract_notification_period' /app/lib/civica_scraper/page/detail.rb:11:in `scrape' /app/lib/civica_scraper.rb:128:in `block in scrape_period' /app/lib/civica_scraper/page/index.rb:14:in `block in scrape' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:239:in `block in each' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `upto' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `each' /app/lib/civica_scraper/page/index.rb:10:in `scrape' /app/lib/civica_scraper.rb:109:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:47:in `<main>' Collecting feed data for orange at 2025-02-05 07:32:39 +0000 ... nambucca: ERROR: 500 => Net::HTTPInternalServerError for https://eservices.nambucca.nsw.gov.au/eservice/daEnquiryInit.do?doc_typ=10&nodeNum=2811 -- unhandled response after 0.9 seconds /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:329:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:47:in `<main>' Collecting feed data for wanneroo at 2025-02-05 07:32:40 +0000 ... orange: ERROR: 500 => Net::HTTPInternalServerError for https://ecouncil.orange.nsw.gov.au/eservice/daEnquiryInit.do?nodeNum=24 -- unhandled response after 1.7 seconds /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:329:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:47:in `<main>' Collecting feed data for whittlesea at 2025-02-05 07:32:41 +0000 ... wanneroo: ERROR: 500 => Net::HTTPInternalServerError for https://eservice.wanneroo.wa.gov.au/eservice/daEnquiry.do?nodeNum=8047 -- unhandled response after 0.8 seconds /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:329:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:47:in `<main>' whittlesea: ERROR: execution expired after 60.0 seconds Collecting feed data for woollahra at 2025-02-05 07:33:41 +0000 ... /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `initialize' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `open' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `block in connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/timeout.rb:103:in `timeout' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:935:in `connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:920:in `do_start' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:915:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:655:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:595:in `connection_for' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:885:in `request' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:280:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:47:in `<main>' *************************************************** woollahra: ERROR: Unknown stage_description: Planning Portal Counter Check after 14.3 seconds /app/lib/civica_scraper/page/detail.rb:69:in `extract_event' Now retrying authorities which earlier had failures without australian proxy at 2025-02-05 07:33:55 +0000: /app/lib/civica_scraper/page/detail.rb:79:in `block in extract_notification_period' bayside, bunbury, burwood, dorset, lane_cove, nambucca, orange, wanneroo, whittlesea, woollahra *************************************************** /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:239:in `block in each' Collecting feed data for bayside at 2025-02-05 07:33:55 +0000 ... /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `upto' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `each' /app/lib/civica_scraper/page/detail.rb:77:in `map' /app/lib/civica_scraper/page/detail.rb:77:in `extract_notification_period' /app/lib/civica_scraper/page/detail.rb:11:in `scrape' /app/lib/civica_scraper.rb:128:in `block in scrape_period' /app/lib/civica_scraper/page/index.rb:14:in `block in scrape' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:239:in `block in each' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `upto' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `each' /app/lib/civica_scraper/page/index.rb:10:in `scrape' /app/lib/civica_scraper.rb:109:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:47:in `<main>' bayside: ERROR: Couldn't find form daEnquiryForm after 0.9 seconds Collecting feed data for bunbury at 2025-02-05 07:33:56 +0000 ... /app/lib/civica_scraper/page/search.rb:10:in `period' /app/lib/civica_scraper.rb:105:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:60:in `<main>' Collecting feed data for burwood at 2025-02-05 07:33:56 +0000 ... bunbury: ERROR: Failed to open TCP connection to ecouncil.bunbury.wa.gov.au:443 (getaddrinfo: Name or service not known) after 0.1 seconds /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:939:in `rescue in block in connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:936:in `block in connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/timeout.rb:93:in `block in timeout' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/timeout.rb:103:in `timeout' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:935:in `connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:920:in `do_start' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:915:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:655:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:595:in `connection_for' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:885:in `request' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:280:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:60:in `<main>' burwood: ERROR: execution expired after 60.0 seconds Collecting feed data for dorset at 2025-02-05 07:34:56 +0000 ... /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `initialize' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `open' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `block in connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/timeout.rb:103:in `timeout' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:935:in `connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:920:in `do_start' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:915:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:655:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:595:in `connection_for' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:885:in `request' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:280:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:60:in `<main>' Collecting feed data for lane_cove at 2025-02-05 07:34:57 +0000 ... dorset: ERROR: Couldn't find form daEnquiryForm after 1.1 seconds /app/lib/civica_scraper/page/search.rb:10:in `period' /app/lib/civica_scraper.rb:105:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:60:in `<main>' Collecting feed data for nambucca at 2025-02-05 07:35:57 +0000 ... lane_cove: ERROR: execution expired after 60.0 seconds /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `initialize' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `open' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `block in connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/timeout.rb:103:in `timeout' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:935:in `connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:920:in `do_start' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:915:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:655:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:595:in `connection_for' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:885:in `request' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:280:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:60:in `<main>' Collecting feed data for orange at 2025-02-05 07:35:58 +0000 ... nambucca: ERROR: 500 => Net::HTTPInternalServerError for https://eservices.nambucca.nsw.gov.au/eservice/daEnquiryInit.do?doc_typ=10&nodeNum=2811 -- unhandled response after 1.0 seconds /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:329:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:60:in `<main>' Collecting feed data for wanneroo at 2025-02-05 07:35:59 +0000 ... orange: ERROR: 403 => Net::HTTPForbidden for https://ecouncil.orange.nsw.gov.au/eservice/daEnquiryInit.do?nodeNum=24 -- unhandled response after 0.1 seconds /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:329:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:60:in `<main>' Collecting feed data for whittlesea at 2025-02-05 07:35:59 +0000 ... wanneroo: ERROR: 500 => Net::HTTPInternalServerError for https://eservice.wanneroo.wa.gov.au/eservice/daEnquiry.do?nodeNum=8047 -- unhandled response after 0.8 seconds /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:329:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:60:in `<main>' whittlesea: ERROR: execution expired after 60.0 seconds Collecting feed data for woollahra at 2025-02-05 07:36:59 +0000 ... /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `initialize' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `open' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `block in connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/timeout.rb:103:in `timeout' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:935:in `connect' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:920:in `do_start' /app/vendor/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:915:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:655:in `start' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:595:in `connection_for' /app/vendor/bundle/ruby/2.5.0/gems/net-http-persistent-4.0.1/lib/net/http/persistent.rb:885:in `request' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize/http/agent.rb:280:in `fetch' /app/vendor/bundle/ruby/2.5.0/gems/mechanize-2.7.7/lib/mechanize.rb:464:in `get' /app/lib/civica_scraper.rb:83:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:60:in `<main>' woollahra: ERROR: Unknown stage_description: Planning Portal Counter Check after 16.2 seconds Finished at 2025-02-05 07:37:16 +0000 /app/lib/civica_scraper/page/detail.rb:69:in `extract_event' /app/lib/civica_scraper/page/detail.rb:79:in `block in extract_notification_period' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:239:in `block in each' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `upto' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `each' /app/lib/civica_scraper/page/detail.rb:77:in `map' /app/lib/civica_scraper/page/detail.rb:77:in `extract_notification_period' /app/lib/civica_scraper/page/detail.rb:11:in `scrape' /app/lib/civica_scraper.rb:128:in `block in scrape_period' /app/lib/civica_scraper/page/index.rb:14:in `block in scrape' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:239:in `block in each' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `upto' /app/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/xml/node_set.rb:238:in `each' /app/lib/civica_scraper/page/index.rb:10:in `scrape' /app/lib/civica_scraper.rb:109:in `scrape_period' /app/lib/civica_scraper.rb:65:in `scrape' scraper.rb:20:in `block in scrape' scraper.rb:16:in `each' scraper.rb:16:in `scrape' scraper.rb:60:in `<main>' scraper.rb:68:in `<main>': There were still errors with the following authorities when retried: [:bayside, :bunbury, :burwood, :dorset, :lane_cove, :nambucca, :orange, :wanneroo, :whittlesea, :woollahra]. See earlier output for details (RuntimeError)

Data

Downloaded 5 times by ianheggie-oaf

To download data sign in with GitHub

Download table (as CSV) Download SQLite database (26 KB) Use the API

rows 10 / 67

council_reference address description info_url date_received date_scraped authority_label on_notice_from on_notice_to
2/2025
26 Arabella Street LONGUEVILLE NSW 2066
Demolition & construction of a new dwelling house
2025-01-09
2025-01-28
lane_cove
2025-01-09
2025-02-02
162/2021
13 Canberra Avenue ST LEONARDS NSW 2065
S 4.55(1A) Modification of Consent - Various amendments
2025-01-13
2025-01-28
lane_cove
2025-01-13
2025-02-02
2/2025
91 Harold Street MOUNT LAWLEY WA 6050
Alterations and Additions to Single House (Amendment to Approved)
2025-01-02
2025-02-01
vincent
1/2025
Unit 22 3 Mitchell Street MOUNT LAWLEY WA 6050
Alterations and Additions to Grouped Dwelling (Unauthorised Existing Development)
2025-01-02
2025-02-01
vincent
3/2025
119-133A Oxford Street LEEDERVILLE WA 6007
S.40 - Jagga Daku
2025-01-02
2025-02-01
vincent
13269/2025
26 Ayla Court EDMONTON QLD 4869
Exemption Request Dual Occupancy
2025-01-31
2025-02-05
cairns
13258/2025
18 Bouganvillea Street HOLLOWAYS BEACH QLD 4878
SP 350352 Building Format Plan No Stage Name 1 Lot into 2 Lots
2025-01-16
2025-02-05
cairns
13244/2025
139-149 Bruce Highway EDMONTON QLD 4869
Combined Application Material Change of Use for Hotel and Shop and Building Works (Place of Significance)
2025-01-08
2025-02-05
cairns
13247/2025
17 Cayley Street TRINITY BEACH QLD 4879
Reconfiguring a Lot Boundary Realignment & Creation of Access Easement
2025-01-14
2025-02-05
cairns
13275/2025
42 Clare Street PARRAMATTA PARK QLD 4870
Building Works Assessable Against the Planning Scheme Dwelling House-Extension
2025-02-04
2025-02-05
cairns

Statistics

Total run time: about 1 hour

Total cpu time used: half a minute

Total disk space used: 2.96 MB

History

  • Auto ran revision 2b082493 and failed .
    62 records added, 58 records removed in the database
  • Auto ran revision 2b082493 and failed .
    58 records added, 54 records removed in the database
  • Auto ran revision 2b082493 and failed .
    54 records added, 48 records removed in the database
  • Auto ran revision 2b082493 and failed .
    48 records added, 48 records removed in the database
  • Auto ran revision 2b082493 and failed .
    51 records added, 51 records removed in the database
  • ...
  • Created on morph.io

Show complete history

Scraper code

Ruby

multiple_civica / scraper.rb