diff --git a/api/failing.json b/api/failing.json index 0b17b24065..ed17a1bc3f 100644 --- a/api/failing.json +++ b/api/failing.json @@ -1 +1 @@ -[{"council_id":"BOT","missing":false,"latest_run":{"status_code":1,"log_text":"[10:15:08] Fetching Scraper for: BOT handlers.py:23\n Begin attempting to scrape: BOT handlers.py:27\n Deleting existing data... base.py:251\n[10:15:09] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[10:15:10] ...data deleted. base.py:258\n Scraping from base.py:41\n http://moderngov.boston.gov.uk/mgWebService.asmx/GetCounci \n llorsByWard \n HTTPSConnectionPool(host='democracy.boston.gov.uk', handlers.py:36\n port=443): Max retries exceeded with url: \n /mgWebService.asmx/GetCouncillorsByWard (Caused by \n SSLError(SSLCertVerificationError(1, '[SSL: \n CERTIFICATE_VERIFY_FAILED] certificate verify failed: \n unable to get local issuer certificate \n (_ssl.c:1007)'))) \n Finished attempting to scrape: BOT base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\nurllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='democracy.boston.gov.uk', port=443): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 725, in send\n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 725, in \n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 266, in resolve_redirects\n resp = self.send(\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 517, in send\n raise SSLError(e, request=request)\nrequests.exceptions.SSLError: HTTPSConnectionPool(host='democracy.boston.gov.uk', port=443): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))\n","start":"2024-03-22 10:15:08.526194","end":"2024-03-22 10:15:10.575572","duration":2}},{"council_id":"BRT","missing":false,"latest_run":{"status_code":1,"log_text":"[10:27:22] Fetching Scraper for: BRT handlers.py:23\n Begin attempting to scrape: BRT handlers.py:27\n Deleting existing data... base.py:251\n[10:27:23] Getting all files in Councillors... base.py:203\n Getting all files in Councillors/json... base.py:203\n ...found 44 files in Councillors/json base.py:219\n Getting all files in Councillors/raw... base.py:203\n ...found 44 files in Councillors/raw base.py:219\n ...found 89 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 89 files base.py:230\n[10:27:24] ...data deleted. base.py:258\n Scraping from base.py:41\n http://democracy.broxtowe.gov.uk/mgWebService.asmx/GetCoun \n cillorsByWard \n[10:29:34] HTTPConnectionPool(host='democracy.broxtowe.gov.uk', handlers.py:36\n port=80): Max retries exceeded with url: \n /mgWebService.asmx/GetCouncillorsByWard (Caused by \n ConnectTimeoutError(, 'Connection to \n democracy.broxtowe.gov.uk timed out. (connect \n timeout=None)')) \n Finished attempting to scrape: BRT base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connection.py\", line 203, in _new_conn\n sock = connection.create_connection(\n File \"/opt/python/urllib3/util/connection.py\", line 85, in create_connection\n raise err\n File \"/opt/python/urllib3/util/connection.py\", line 73, in create_connection\n sock.connect(sa)\nTimeoutError: [Errno 110] Connection timed out\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 497, in _make_request\n conn.request(\n File \"/opt/python/urllib3/connection.py\", line 395, in request\n self.endheaders()\n File \"/var/lang/lib/python3.10/http/client.py\", line 1278, in endheaders\n self._send_output(message_body, encode_chunked=encode_chunked)\n File \"/var/lang/lib/python3.10/http/client.py\", line 1038, in _send_output\n self.send(msg)\n File \"/var/lang/lib/python3.10/http/client.py\", line 976, in send\n self.connect()\n File \"/opt/python/urllib3/connection.py\", line 243, in connect\n self.sock = self._new_conn()\n File \"/opt/python/urllib3/connection.py\", line 212, in _new_conn\n raise ConnectTimeoutError(\nurllib3.exceptions.ConnectTimeoutError: (, 'Connection to democracy.broxtowe.gov.uk timed out. (connect timeout=None)')\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='democracy.broxtowe.gov.uk', port=80): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to democracy.broxtowe.gov.uk timed out. (connect timeout=None)'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 507, in send\n raise ConnectTimeout(e, request=request)\nrequests.exceptions.ConnectTimeout: HTTPConnectionPool(host='democracy.broxtowe.gov.uk', port=80): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to democracy.broxtowe.gov.uk timed out. (connect timeout=None)'))\n","start":"2024-03-22 10:27:22.221131","end":"2024-03-22 10:29:34.859437","duration":132}},{"council_id":"CAN","missing":false,"latest_run":{"status_code":1,"log_text":"[09:40:05] Fetching Scraper for: CAN handlers.py:23\n Begin attempting to scrape: CAN handlers.py:27\n Deleting existing data... base.py:251\n[09:40:06] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[09:40:07] ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.cannockchasedc.gov.uk/council/about-council/yo \n ur-councillors \n[09:40:09] list index out of range handlers.py:36\n Finished attempting to scrape: CAN base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 161, in get_list_container\n return selected[0]\nIndexError: list index out of range\n","start":"2024-03-22 09:40:05.518200","end":"2024-03-22 09:40:09.794089","duration":4}},{"council_id":"CAT","missing":false,"latest_run":{"status_code":1,"log_text":"[10:09:16] Fetching Scraper for: CAT handlers.py:23\n Begin attempting to scrape: CAT handlers.py:27\n Deleting existing data... base.py:251\n[10:09:17] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[10:09:18] ...data deleted. base.py:258\n Scraping from base.py:41\n http://democracy.canterbury.gov.uk/mgWebService.asmx/GetCo \n uncillorsByWard \n[10:11:28] HTTPConnectionPool(host='democracy.canterbury.gov.uk', handlers.py:36\n port=80): Max retries exceeded with url: \n /mgWebService.asmx/GetCouncillorsByWard (Caused by \n ConnectTimeoutError(, 'Connection to \n democracy.canterbury.gov.uk timed out. (connect \n timeout=None)')) \n[10:11:29] Finished attempting to scrape: CAT base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connection.py\", line 203, in _new_conn\n sock = connection.create_connection(\n File \"/opt/python/urllib3/util/connection.py\", line 85, in create_connection\n raise err\n File \"/opt/python/urllib3/util/connection.py\", line 73, in create_connection\n sock.connect(sa)\nTimeoutError: [Errno 110] Connection timed out\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 497, in _make_request\n conn.request(\n File \"/opt/python/urllib3/connection.py\", line 395, in request\n self.endheaders()\n File \"/var/lang/lib/python3.10/http/client.py\", line 1278, in endheaders\n self._send_output(message_body, encode_chunked=encode_chunked)\n File \"/var/lang/lib/python3.10/http/client.py\", line 1038, in _send_output\n self.send(msg)\n File \"/var/lang/lib/python3.10/http/client.py\", line 976, in send\n self.connect()\n File \"/opt/python/urllib3/connection.py\", line 243, in connect\n self.sock = self._new_conn()\n File \"/opt/python/urllib3/connection.py\", line 212, in _new_conn\n raise ConnectTimeoutError(\nurllib3.exceptions.ConnectTimeoutError: (, 'Connection to democracy.canterbury.gov.uk timed out. (connect timeout=None)')\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='democracy.canterbury.gov.uk', port=80): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to democracy.canterbury.gov.uk timed out. (connect timeout=None)'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 507, in send\n raise ConnectTimeout(e, request=request)\nrequests.exceptions.ConnectTimeout: HTTPConnectionPool(host='democracy.canterbury.gov.uk', port=80): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to democracy.canterbury.gov.uk timed out. (connect timeout=None)'))\n","start":"2024-03-22 10:09:16.454863","end":"2024-03-22 10:11:29.102670","duration":132}},{"council_id":"DRS","missing":false,"latest_run":{"status_code":1,"log_text":"[10:40:51] Fetching Scraper for: DRS handlers.py:23\n Begin attempting to scrape: DRS handlers.py:27\n Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n[10:40:52] ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n ...data deleted. base.py:258\n Scraping from base.py:41\n http://meetings.derrycityandstrabanedistrict.com/mgWebServ \n ice.asmx/GetCouncillorsByWard \n[10:43:03] HTTPConnectionPool(host='meetings.derrycityandstrabane handlers.py:36\n district.com', port=80): Max retries exceeded with \n url: /mgWebService.asmx/GetCouncillorsByWard (Caused \n by \n ConnectTimeoutError(, 'Connection to \n meetings.derrycityandstrabanedistrict.com timed out. \n (connect timeout=None)')) \n Finished attempting to scrape: DRS base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connection.py\", line 203, in _new_conn\n sock = connection.create_connection(\n File \"/opt/python/urllib3/util/connection.py\", line 85, in create_connection\n raise err\n File \"/opt/python/urllib3/util/connection.py\", line 73, in create_connection\n sock.connect(sa)\nTimeoutError: [Errno 110] Connection timed out\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 497, in _make_request\n conn.request(\n File \"/opt/python/urllib3/connection.py\", line 395, in request\n self.endheaders()\n File \"/var/lang/lib/python3.10/http/client.py\", line 1278, in endheaders\n self._send_output(message_body, encode_chunked=encode_chunked)\n File \"/var/lang/lib/python3.10/http/client.py\", line 1038, in _send_output\n self.send(msg)\n File \"/var/lang/lib/python3.10/http/client.py\", line 976, in send\n self.connect()\n File \"/opt/python/urllib3/connection.py\", line 243, in connect\n self.sock = self._new_conn()\n File \"/opt/python/urllib3/connection.py\", line 212, in _new_conn\n raise ConnectTimeoutError(\nurllib3.exceptions.ConnectTimeoutError: (, 'Connection to meetings.derrycityandstrabanedistrict.com timed out. (connect timeout=None)')\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='meetings.derrycityandstrabanedistrict.com', port=80): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to meetings.derrycityandstrabanedistrict.com timed out. (connect timeout=None)'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 507, in send\n raise ConnectTimeout(e, request=request)\nrequests.exceptions.ConnectTimeout: HTTPConnectionPool(host='meetings.derrycityandstrabanedistrict.com', port=80): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to meetings.derrycityandstrabanedistrict.com timed out. (connect timeout=None)'))\n","start":"2024-03-22 10:40:51.165004","end":"2024-03-22 10:43:03.748974","duration":132}},{"council_id":"ELS","missing":false,"latest_run":{"status_code":1,"log_text":"[09:39:54] Fetching Scraper for: ELS handlers.py:23\n Begin attempting to scrape: ELS handlers.py:27\n Deleting existing data... base.py:251\n[09:39:55] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n ...data deleted. base.py:258\n Scraping from base.py:41\n https://cne-siar.gov.uk/home/your-council/council-members/ \n[09:40:00] Scraping from https://cne-siar.gov.uk/kenneth-j-maclean/ base.py:41\n[09:40:02] 'NoneType' object has no attribute 'get_text' handlers.py:36\n Finished attempting to scrape: ELS base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 58, in run\n councillor = self.get_single_councillor(councillor_html)\n File \"scrapers/ELS-na-h-eileanan-an-iar/councillors.py\", line 25, in get_single_councillor\n .get_text(strip=True)\nAttributeError: 'NoneType' object has no attribute 'get_text'\n","start":"2024-03-22 09:39:54.169609","end":"2024-03-22 09:40:02.230500","duration":8}},{"council_id":"ERW","missing":false,"latest_run":{"status_code":1,"log_text":"[09:33:09] Fetching Scraper for: ERW handlers.py:23\n Begin attempting to scrape: ERW handlers.py:27\n Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n[09:33:10] ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.eastrenfrewshire.gov.uk/Find-my-councillor \n ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n[09:33:11] Finished attempting to scrape: ERW base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 155, in get_list_container\n self.base_url_soup = self.get_page(self.base_url)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 142, in get_page\n page = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-22 09:33:09.080539","end":"2024-03-22 09:33:11.111459","duration":2}},{"council_id":"ESS","missing":false,"latest_run":{"status_code":1,"log_text":"[10:06:37] Fetching Scraper for: ESS handlers.py:23\n Begin attempting to scrape: ESS handlers.py:27\n Deleting existing data... base.py:251\n[10:06:38] Getting all files in Councillors... base.py:203\n Getting all files in Councillors/json... base.py:203\n ...found 33 files in Councillors/json base.py:219\n Getting all files in Councillors/raw... base.py:203\n ...found 33 files in Councillors/raw base.py:219\n ...found 67 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 67 files base.py:230\n[10:06:39] ...data deleted. base.py:258\n Scraping from base.py:41\n http://cmis.essex.gov.uk/EssexCmis5/Councillors.aspx \n[10:06:41] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/655/ScreenMode/Ward/Default. \n aspx \n[10:06:47] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/327/ScreenMode/Ward/Default. \n aspx \n[10:06:49] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/100/ScreenMode/Ward/Default. \n aspx \n[10:06:55] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/639/ScreenMode/Ward/Default. \n aspx \n[10:06:57] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/882/ScreenMode/Ward/Default. \n aspx \n[10:07:00] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/880/ScreenMode/Ward/Default. \n aspx \n[10:07:03] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/879/ScreenMode/Ward/Default. \n aspx \n[10:07:05] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/648/ScreenMode/Ward/Default. \n aspx \n[10:07:07] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/80/ScreenMode/Ward/Default.a \n spx \n[10:07:10] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/649/ScreenMode/Ward/Default. \n aspx \n[10:07:12] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/866/ScreenMode/Ward/Default. \n aspx \n[10:07:15] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/458/ScreenMode/Ward/Default. \n aspx \n[10:07:18] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/864/ScreenMode/Ward/Default. \n aspx \n[10:07:22] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/887/ScreenMode/Ward/Default. \n aspx \n[10:07:26] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/334/ScreenMode/Ward/Default. \n aspx \n[10:07:29] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/650/ScreenMode/Ward/Default. \n aspx \n[10:07:31] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/364/ScreenMode/Ward/Default. \n aspx \n[10:07:34] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/863/ScreenMode/Ward/Default. \n aspx \n[10:07:36] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/309/ScreenMode/Ward/Default. \n aspx \n[10:07:38] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/91/ScreenMode/Ward/Default.a \n spx \n[10:07:41] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/877/ScreenMode/Ward/Default. \n aspx \n[10:07:43] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/777/ScreenMode/Ward/Default. \n aspx \n[10:07:46] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/865/ScreenMode/Ward/Default. \n aspx \n[10:07:49] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/359/ScreenMode/Ward/Default. \n aspx \n[10:07:51] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/870/ScreenMode/Ward/Default. \n aspx \n[10:07:55] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/340/ScreenMode/Ward/Default. \n aspx \n[10:07:58] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/94/ScreenMode/Ward/Default.a \n spx \n[10:08:02] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/883/ScreenMode/Ward/Default. \n aspx \n[10:08:04] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/656/ScreenMode/Ward/Default. \n aspx \n[10:08:08] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/872/ScreenMode/Ward/Default. \n aspx \n[10:08:11] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/117/ScreenMode/Ward/Default. \n aspx \n[10:08:14] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/889/ScreenMode/Ward/Default. \n aspx \n[10:08:16] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/610/ScreenMode/Ward/Default. \n aspx \n[10:08:19] 'title' handlers.py:36\n Committing batch 1 consisting of 66 files base.py:291\n[10:08:20] Finished attempting to scrape: ESS base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 58, in run\n councillor = self.get_single_councillor(councillor_html)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 306, in get_single_councillor\n party = self.get_party_name(list_page_html)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 287, in get_party_name\n list_page_html.find_all(\"img\")[-1][\"title\"]\n File \"/opt/python/bs4/element.py\", line 1573, in __getitem__\n return self.attrs[key]\nKeyError: 'title'\n","start":"2024-03-22 10:06:37.401883","end":"2024-03-22 10:08:20.830807","duration":103}},{"council_id":"GRE","missing":false,"latest_run":{"status_code":1,"log_text":"[08:23:04] Fetching Scraper for: GRE handlers.py:23\n Begin attempting to scrape: GRE handlers.py:27\n Deleting existing data... base.py:251\n[08:23:05] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n ...data deleted. base.py:258\n Scraping from base.py:41\n https://committees.royalgreenwich.gov.uk/Councillors/tabid \n /63/ScreenMode/Alphabetical/Default.aspx \n[08:23:06] HTTPSConnectionPool(host='committees.royalgreenwich.go handlers.py:36\n v.uk', port=443): Max retries exceeded with url: \n /Councillors/tabid/63/ScreenMode/Alphabetical/Default. \n aspx (Caused by SSLError(SSLCertVerificationError(1, \n '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify \n failed: unable to get local issuer certificate \n (_ssl.c:1007)'))) \n Finished attempting to scrape: GRE base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\nurllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='committees.royalgreenwich.gov.uk', port=443): Max retries exceeded with url: /Councillors/tabid/63/ScreenMode/Alphabetical/Default.aspx (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 277, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 517, in send\n raise SSLError(e, request=request)\nrequests.exceptions.SSLError: HTTPSConnectionPool(host='committees.royalgreenwich.gov.uk', port=443): Max retries exceeded with url: /Councillors/tabid/63/ScreenMode/Alphabetical/Default.aspx (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))\n","start":"2024-03-22 08:23:04.265790","end":"2024-03-22 08:23:06.356331","duration":2}},{"council_id":"GRT","missing":false,"latest_run":{"status_code":1,"log_text":"[08:32:49] Fetching Scraper for: GRT handlers.py:23\n Begin attempting to scrape: GRT handlers.py:27\n[08:32:50] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[08:32:51] ...data deleted. base.py:258\n Scraping from base.py:41\n https://www2.guildford.gov.uk/councilmeetings/mgWebService \n .asmx/GetCouncillorsByWard \n HTTPSConnectionPool(host='www2.guildford.gov.uk', handlers.py:36\n port=443): Max retries exceeded with url: \n /councilmeetings/mgWebService.asmx/GetCouncillorsByWar \n d (Caused by \n NameResolutionError(\": Failed to resolve \n 'www2.guildford.gov.uk' ([Errno -2] Name or service \n not known)\")) \n Finished attempting to scrape: GRT base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connection.py\", line 203, in _new_conn\n sock = connection.create_connection(\n File \"/opt/python/urllib3/util/connection.py\", line 60, in create_connection\n for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):\n File \"/var/lang/lib/python3.10/socket.py\", line 955, in getaddrinfo\n for res in _socket.getaddrinfo(host, port, family, type, proto, flags):\nsocket.gaierror: [Errno -2] Name or service not known\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 611, in connect\n self.sock = sock = self._new_conn()\n File \"/opt/python/urllib3/connection.py\", line 210, in _new_conn\n raise NameResolutionError(self.host, self, e) from e\nurllib3.exceptions.NameResolutionError: : Failed to resolve 'www2.guildford.gov.uk' ([Errno -2] Name or service not known)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www2.guildford.gov.uk', port=443): Max retries exceeded with url: /councilmeetings/mgWebService.asmx/GetCouncillorsByWard (Caused by NameResolutionError(\": Failed to resolve 'www2.guildford.gov.uk' ([Errno -2] Name or service not known)\"))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 519, in send\n raise ConnectionError(e, request=request)\nrequests.exceptions.ConnectionError: HTTPSConnectionPool(host='www2.guildford.gov.uk', port=443): Max retries exceeded with url: /councilmeetings/mgWebService.asmx/GetCouncillorsByWard (Caused by NameResolutionError(\": Failed to resolve 'www2.guildford.gov.uk' ([Errno -2] Name or service not known)\"))\n","start":"2024-03-22 08:32:49.844107","end":"2024-03-22 08:32:51.982189","duration":2}},{"council_id":"HLD","missing":false,"latest_run":{"status_code":1,"log_text":"[08:51:36] Fetching Scraper for: HLD handlers.py:23\n Begin attempting to scrape: HLD handlers.py:27\n Deleting existing data... base.py:251\n[08:51:37] Getting all files in Councillors... base.py:203\n Getting all files in Councillors/json... base.py:203\n ...found 72 files in Councillors/json base.py:219\n Getting all files in Councillors/raw... base.py:203\n ...found 72 files in Councillors/raw base.py:219\n ...found 145 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 100 files base.py:230\n[08:51:38] Deleting batch no. 2 consisting of 45 files base.py:230\n ...data deleted. base.py:258\n Scraping from https://www.highland.gov.uk/councillors/name base.py:41\n[08:51:40] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/102/sarah_atkin \n[08:51:41] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/110/michael_baird \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/94/andrew_baldrey \n[08:51:42] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/100/chris_ballance \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/120/chris_birt \n[08:51:43] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/41/bill_boyd \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/8/raymond_bremner \n[08:51:44] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/30/ian_brown \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/79/john_bruce \n[08:51:45] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/117/michael_camero \n n \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/17/isabelle_biz_ca \n mpbell \n[08:51:47] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/82/glynis_campbell \n _sinclair \n[08:51:48] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/35/alasdair_christ \n ie \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/40/muriel_cockburn \n[08:51:49] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/124/tamala_collier \n[08:51:50] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/101/helen_crawford \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/83/sarah_fanet \n[08:51:51] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/71/john_finlayson \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/29/david_fraser \n[08:51:52] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/47/laurie_fraser \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/10/richard_gale \n[08:51:53] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/51/ken_gowans \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/95/john_grafton \n[08:51:54] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/52/alex_graham \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/130/michael_green \n[08:51:55] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/128/david_gregg \n[08:51:56] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/114/ron_gunn \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/123/jackie_hendry \n[08:51:57] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/111/marianne_hutch \n ison \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/68/andrew_jarvie \n[08:51:58] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/131/barbara_jarvie \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/103/lyndsey_johnst \n on \n[08:51:59] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/109/russell_jones \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/99/sean_kennedy \n[08:52:00] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/86/emma_knox \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/121/liz_kraft \n[08:52:01] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/61/bill_lobban \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/122/patrick_logue \n[08:52:02] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/78/derek_louden \n[08:52:03] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/105/morven-may_mac \n callum \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/112/angus_macdonal \n d \n[08:52:04] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/12/willie_mackay \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/64/graham_mackenzi \n e \n[08:52:05] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/39/isabelle_macken \n zie \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/11/struan_mackie \n[08:52:06] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/125/andrew_mackint \n osh \n Committing batch 1 consisting of 92 files base.py:291\n[08:52:08] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/98/ryan_mackintosh \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/66/angela_maclean \n[08:52:09] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/119/kate_maclean \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/113/thomas_maclenn \n an \n[08:52:10] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/37/duncan_macphers \n on \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/69/bet_mcallister \n[08:52:11] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/116/jan_mcewan \n[08:52:12] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/14/jim_mcgillivray \n[08:52:13] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/107/drew_millar \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/2/hugh_morrison \n[08:52:14] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/45/calum_munro \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/20/pauline_munro \n[08:52:15] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/118/leslie-anne_ni \n ven \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/126/molly_nolan \n[08:52:16] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/132/paul_oldham \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/75/margaret_paters \n on \n[08:52:17] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/129/morven_reid \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/13/matthew_reiss \n[08:52:18] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/89/alasdair_rhind \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/87/trish_robertson \n[08:52:19] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/6/karl_rosie \n[08:52:20] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/133/maureen_ross \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/97/liz_saggers \n[08:52:21] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/7/andrew_sinclair \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/53/maxine_smith \n[08:52:22] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/108/ruraidh_stewar \n t \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/81/position_vacant \n[08:52:23] 'NoneType' object has no attribute 'get_text' handlers.py:36\n Committing batch 2 consisting of 52 files base.py:291\n[08:52:24] Finished attempting to scrape: HLD base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 58, in run\n councillor = self.get_single_councillor(councillor_html)\n File \"scrapers/HLD-highland/councillors.py\", line 49, in get_single_councillor\n councillor.email = soup.select_one(\"li a[href^=mailto]\").get_text(\nAttributeError: 'NoneType' object has no attribute 'get_text'\n","start":"2024-03-22 08:51:36.261863","end":"2024-03-22 08:52:24.474178","duration":48}},{"council_id":"LCE","missing":false,"latest_run":{"status_code":1,"log_text":"[08:23:32] Fetching Scraper for: LCE handlers.py:23\n Begin attempting to scrape: LCE handlers.py:27\n[08:23:33] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[08:23:34] ...data deleted. base.py:258\n Scraping from base.py:41\n https://cabinet.leicester.gov.uk//mgWebService.asmx/GetCou \n ncillorsByWard \n[08:25:43] HTTPSConnectionPool(host='cabinet.leicester.gov.uk', handlers.py:36\n port=443): Max retries exceeded with url: \n //mgWebService.asmx/GetCouncillorsByWard (Caused by \n ConnectTimeoutError(, 'Connection to \n cabinet.leicester.gov.uk timed out. (connect \n timeout=None)')) \n[08:25:44] Finished attempting to scrape: LCE base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connection.py\", line 203, in _new_conn\n sock = connection.create_connection(\n File \"/opt/python/urllib3/util/connection.py\", line 85, in create_connection\n raise err\n File \"/opt/python/urllib3/util/connection.py\", line 73, in create_connection\n sock.connect(sa)\nTimeoutError: [Errno 110] Connection timed out\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 611, in connect\n self.sock = sock = self._new_conn()\n File \"/opt/python/urllib3/connection.py\", line 212, in _new_conn\n raise ConnectTimeoutError(\nurllib3.exceptions.ConnectTimeoutError: (, 'Connection to cabinet.leicester.gov.uk timed out. (connect timeout=None)')\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='cabinet.leicester.gov.uk', port=443): Max retries exceeded with url: //mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to cabinet.leicester.gov.uk timed out. (connect timeout=None)'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 507, in send\n raise ConnectTimeout(e, request=request)\nrequests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='cabinet.leicester.gov.uk', port=443): Max retries exceeded with url: //mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to cabinet.leicester.gov.uk timed out. (connect timeout=None)'))\n","start":"2024-03-22 08:23:32.742940","end":"2024-03-22 08:25:44.322125","duration":131}},{"council_id":"LEC","missing":false,"latest_run":{"status_code":1,"log_text":"[10:00:52] Fetching Scraper for: LEC handlers.py:23\n Begin attempting to scrape: LEC handlers.py:27\n Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n[10:00:53] ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n ...data deleted. base.py:258\n Scraping from base.py:41\n http://politics.leics.gov.uk//mgWebService.asmx/GetCouncil \n lorsByWard \n HTTPConnectionPool(host='politics.leics.gov.uk', handlers.py:36\n port=80): Max retries exceeded with url: \n //mgWebService.asmx/GetCouncillorsByWard (Caused by \n NewConnectionError(': Failed to establish a new \n connection: [Errno 111] Connection refused')) \n[10:00:54] Finished attempting to scrape: LEC base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connection.py\", line 203, in _new_conn\n sock = connection.create_connection(\n File \"/opt/python/urllib3/util/connection.py\", line 85, in create_connection\n raise err\n File \"/opt/python/urllib3/util/connection.py\", line 73, in create_connection\n sock.connect(sa)\nConnectionRefusedError: [Errno 111] Connection refused\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 497, in _make_request\n conn.request(\n File \"/opt/python/urllib3/connection.py\", line 395, in request\n self.endheaders()\n File \"/var/lang/lib/python3.10/http/client.py\", line 1278, in endheaders\n self._send_output(message_body, encode_chunked=encode_chunked)\n File \"/var/lang/lib/python3.10/http/client.py\", line 1038, in _send_output\n self.send(msg)\n File \"/var/lang/lib/python3.10/http/client.py\", line 976, in send\n self.connect()\n File \"/opt/python/urllib3/connection.py\", line 243, in connect\n self.sock = self._new_conn()\n File \"/opt/python/urllib3/connection.py\", line 218, in _new_conn\n raise NewConnectionError(\nurllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='politics.leics.gov.uk', port=80): Max retries exceeded with url: //mgWebService.asmx/GetCouncillorsByWard (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 519, in send\n raise ConnectionError(e, request=request)\nrequests.exceptions.ConnectionError: HTTPConnectionPool(host='politics.leics.gov.uk', port=80): Max retries exceeded with url: //mgWebService.asmx/GetCouncillorsByWard (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))\n","start":"2024-03-22 10:00:52.126638","end":"2024-03-22 10:00:54.364164","duration":2}},{"council_id":"MAV","missing":false,"latest_run":{"status_code":1,"log_text":"[10:03:32] Fetching Scraper for: MAV handlers.py:23\n Begin attempting to scrape: MAV handlers.py:27\n Deleting existing data... base.py:251\n[10:03:33] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[10:03:34] ...data deleted. base.py:258\n Scraping from base.py:41\n http://moderngov.malvernhills.gov.uk/mgWebService.asmx/Get \n CouncillorsByWard \n ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n Finished attempting to scrape: MAV base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 725, in send\n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 725, in \n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 266, in resolve_redirects\n resp = self.send(\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-22 10:03:32.605960","end":"2024-03-22 10:03:34.712686","duration":2}},{"council_id":"MOL","missing":false,"latest_run":{"status_code":1,"log_text":"[10:11:45] Fetching Scraper for: MOL handlers.py:23\n Begin attempting to scrape: MOL handlers.py:27\n[10:11:46] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[10:11:47] ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.molevalley.gov.uk/home/council/councillors/who \n -are-your-councillors \n[10:11:51] 404 Client Error: Not Found for url: handlers.py:36\n https://www.molevalley.gov.uk/home/council/councillors \n /who-are-your-councillors \n[10:11:52] Finished attempting to scrape: MOL base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 155, in get_list_container\n self.base_url_soup = self.get_page(self.base_url)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 142, in get_page\n page = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 50, in get\n response.raise_for_status()\n File \"/opt/python/requests/models.py\", line 1021, in raise_for_status\n raise HTTPError(http_error_msg, response=self)\nrequests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://www.molevalley.gov.uk/home/council/councillors/who-are-your-councillors\n","start":"2024-03-22 10:11:45.735078","end":"2024-03-22 10:11:52.146061","duration":6}},{"council_id":"MTY","missing":false,"latest_run":{"status_code":1,"log_text":"[09:43:29] Fetching Scraper for: MTY handlers.py:23\n Begin attempting to scrape: MTY handlers.py:27\n Deleting existing data... base.py:251\n[09:43:30] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[09:43:31] ...data deleted. base.py:258\n Scraping from base.py:41\n http://democracy.merthyr.gov.uk/mgWebService.asmx/GetCounc \n illorsByWard \n ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n Finished attempting to scrape: MTY base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 725, in send\n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 725, in \n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 266, in resolve_redirects\n resp = self.send(\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-22 09:43:29.481998","end":"2024-03-22 09:43:31.535132","duration":2}},{"council_id":"NUN","missing":false,"latest_run":{"status_code":1,"log_text":"[08:42:00] Fetching Scraper for: NUN handlers.py:23\n Begin attempting to scrape: NUN handlers.py:27\n Deleting existing data... base.py:251\n[08:42:01] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[08:42:02] ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.nuneatonandbedworth.gov.uk/councillors/name \n 404 Client Error: Not Found for url: handlers.py:36\n https://www.nuneatonandbedworth.gov.uk/councillors/nam \n e \n Finished attempting to scrape: NUN base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 155, in get_list_container\n self.base_url_soup = self.get_page(self.base_url)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 142, in get_page\n page = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 50, in get\n response.raise_for_status()\n File \"/opt/python/requests/models.py\", line 1021, in raise_for_status\n raise HTTPError(http_error_msg, response=self)\nrequests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://www.nuneatonandbedworth.gov.uk/councillors/name\n","start":"2024-03-22 08:42:00.227987","end":"2024-03-22 08:42:02.447961","duration":2}},{"council_id":"ORK","missing":false,"latest_run":{"status_code":1,"log_text":"[08:43:30] Fetching Scraper for: ORK handlers.py:23\n Begin attempting to scrape: ORK handlers.py:27\n[08:43:31] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n Getting all files in Councillors/json... base.py:203\n ...found 16 files in Councillors/json base.py:219\n Getting all files in Councillors/raw... base.py:203\n[08:43:32] ...found 16 files in Councillors/raw base.py:219\n ...found 33 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 33 files base.py:230\n ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/councillors. \n htm \n[08:43:33] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/james-moar.h \n tm \n[08:43:34] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/raymie-peace \n .htm \n[08:43:35] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/gillian-skus \n e.htm \n[08:43:36] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/david-dawson \n .htm \n[08:43:37] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/Steven-Heddl \n e.htm \n[08:43:38] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/john-ross-sc \n ott.htm \n[08:43:39] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/gwenda-shear \n er.htm \n[08:43:41] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/sandy-cowie. \n htm \n Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/kristopher-l \n eask.htm \n[08:43:42] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/leslie-manso \n n.htm \n[08:43:43] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/ivan-taylor. \n htm \n[08:43:44] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/stephen-clac \n kson.htm \n[08:43:45] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/mellissa-tho \n mson.htm \n Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/heather-wood \n bridge.htm \n[08:43:46] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/graham-bevan \n .htm \n[08:43:47] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/lindsay-hall \n .htm \n[08:43:48] 'NoneType' object is not subscriptable handlers.py:36\n Committing batch 1 consisting of 32 files base.py:291\n[08:43:49] Finished attempting to scrape: ORK base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 58, in run\n councillor = self.get_single_councillor(councillor_html)\n File \"scrapers/ORK-orkney-islands/councillors.py\", line 16, in get_single_councillor\n url = urljoin(self.base_url, councillor_html.a[\"href\"])\nTypeError: 'NoneType' object is not subscriptable\n","start":"2024-03-22 08:43:30.715265","end":"2024-03-22 08:43:49.458116","duration":18}},{"council_id":"ROS","missing":false,"latest_run":{"status_code":1,"log_text":"[08:57:03] Fetching Scraper for: ROS handlers.py:23\n Begin attempting to scrape: ROS handlers.py:27\n Deleting existing data... base.py:251\n[08:57:04] Getting all files in Councillors... base.py:203\n Getting all files in Councillors/json... base.py:203\n ...found 35 files in Councillors/json base.py:219\n Getting all files in Councillors/raw... base.py:203\n ...found 35 files in Councillors/raw base.py:219\n ...found 71 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 71 files base.py:230\n[08:57:05] ...data deleted. base.py:258\n Scraping from https://www.rossendale.gov.uk/councillors base.py:41\n[08:57:07] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10079/adrian-lyt \n hgoe \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10084/alan-neal \n[08:57:08] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10093/alan-woods \n[08:57:09] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10062/alyson-bar \n nes \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10095/andrew-wal \n msley \n[08:57:11] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10080/andy-macna \n e \n[08:57:12] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10102/ann-hodgki \n ss \n[08:57:13] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10077/ann-kenyon \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10065/anne-cartn \n er-cheetham \n[08:57:14] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10097/annie-mcma \n hon \n[08:57:15] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10061/barbara-as \n hworth \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10101/caroline-s \n nowden \n[08:57:16] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10103/christine- \n gill \n[08:57:17] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10107/danielle-a \n shworth \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10070/david-foxc \n roft \n[08:57:18] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10096/dayne-powe \n ll \n[08:57:19] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10071/gemma-rook \n e \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10083/granville- \n morris \n[08:57:20] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10085/jacqueline \n -oakes \n[08:57:21] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10067/james-eato \n n \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10060/janet-whit \n ehead \n[08:57:22] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10075/janice-joh \n nson \n[08:57:23] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10064/jenny-rigb \n y \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10105/judith-dri \n ver \n[08:57:24] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10088/julie-adsh \n ead \n[08:57:25] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10087/laura-beth \n -thompson \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10100/liz-mcinne \n s \n[08:57:26] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10086/marilyn-pr \n octer \n[08:57:27] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10099/mary-cooga \n n \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10106/matt-norto \n n \n[08:57:28] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10098/michelle-s \n mith \n[08:57:29] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10104/neil-looke \n r \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10081/patrick-ma \n rriott \n[08:57:30] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10072/samara-bar \n nes \n[08:57:31] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10063/scott-smit \n h \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10074/vacant-vac \n ant \n[08:57:32] 'NoneType' object is not subscriptable handlers.py:36\n Committing batch 1 consisting of 70 files base.py:291\n[08:57:33] Finished attempting to scrape: ROS base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 58, in run\n councillor = self.get_single_councillor(councillor_html)\n File \"scrapers/ROS-rossendale/councillors.py\", line 48, in get_single_councillor\n councillor.email = soup.select_one(\".page-meta a[href^=mailto]\")[\nTypeError: 'NoneType' object is not subscriptable\n","start":"2024-03-22 08:57:03.316813","end":"2024-03-22 08:57:33.744846","duration":30}},{"council_id":"SAY","missing":false,"latest_run":{"status_code":1,"log_text":"[09:44:30] Fetching Scraper for: SAY handlers.py:23\n Begin attempting to scrape: SAY handlers.py:27\n[09:44:31] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[09:44:32] ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.south-ayrshire.gov.uk/councillors/ \n ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n Finished attempting to scrape: SAY base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 155, in get_list_container\n self.base_url_soup = self.get_page(self.base_url)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 142, in get_page\n page = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-22 09:44:30.763429","end":"2024-03-22 09:44:32.796367","duration":2}},{"council_id":"SHE","missing":false,"latest_run":{"status_code":null,"log_text":"[11:28:20] Fetching Scraper for: SHE handlers.py:22\n Begin attempting to scrape: SHE handlers.py:25\n Deleting existing data... base.py:234\n Getting all files in SHE... base.py:186\n[11:28:21] Getting all files in SHE/json... base.py:186\n ...found 30 files in SHE/json base.py:202\n Getting all files in SHE/raw... base.py:186\n ...found 30 files in SHE/raw base.py:202\n ...found 61 files in SHE base.py:202\n Deleting batch no. 1 consisting of 61 files base.py:211\n[11:28:32] An error occurred (ThrottlingException) when calling handlers.py:34\n the CreateCommit operation (reached max retries: 4): \n Rate exceeded \n Finished attempting to scrape: SHE base.py:319\n","errors":"An error occurred (ThrottlingException) when calling the CreateCommit operation (reached max retries: 4): Rate exceeded","start":"2022-04-04 11:28:20.509898","end":"2022-04-04 11:28:32.871624","duration":12}},{"council_id":"SHO","missing":false,"latest_run":{"status_code":1,"log_text":"[09:44:14] Fetching Scraper for: SHO handlers.py:23\n Begin attempting to scrape: SHO handlers.py:27\n[09:44:15] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[09:44:16] ...data deleted. base.py:258\n Scraping from base.py:41\n https://democracy.sholland.gov.uk/mgWebService.asmx/GetCou \n ncillorsByWard \n HTTPSConnectionPool(host='democracy.sholland.gov.uk', handlers.py:36\n port=443): Max retries exceeded with url: \n /mgWebService.asmx/GetCouncillorsByWard (Caused by \n SSLError(SSLCertVerificationError(1, '[SSL: \n CERTIFICATE_VERIFY_FAILED] certificate verify failed: \n unable to get local issuer certificate \n (_ssl.c:1007)'))) \n Finished attempting to scrape: SHO base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\nurllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='democracy.sholland.gov.uk', port=443): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 517, in send\n raise SSLError(e, request=request)\nrequests.exceptions.SSLError: HTTPSConnectionPool(host='democracy.sholland.gov.uk', port=443): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))\n","start":"2024-03-22 09:44:14.800178","end":"2024-03-22 09:44:16.834736","duration":2}},{"council_id":"SOL","missing":false,"latest_run":{"status_code":1,"log_text":"[10:05:21] Fetching Scraper for: SOL handlers.py:23\n Begin attempting to scrape: SOL handlers.py:27\n Deleting existing data... base.py:251\n[10:05:22] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[10:05:23] ...data deleted. base.py:258\n Scraping from base.py:41\n https://eservices.solihull.gov.uk/mgInternet/mgWebService. \n asmx/GetCouncillorsByWard \n HTTPSConnectionPool(host='eservices.solihull.gov.uk', handlers.py:36\n port=443): Max retries exceeded with url: \n /mgInternet/mgWebService.asmx/GetCouncillorsByWard \n (Caused by \n NewConnectionError(': Failed to establish a new \n connection: [Errno 111] Connection refused')) \n Finished attempting to scrape: SOL base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connection.py\", line 203, in _new_conn\n sock = connection.create_connection(\n File \"/opt/python/urllib3/util/connection.py\", line 85, in create_connection\n raise err\n File \"/opt/python/urllib3/util/connection.py\", line 73, in create_connection\n sock.connect(sa)\nConnectionRefusedError: [Errno 111] Connection refused\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 611, in connect\n self.sock = sock = self._new_conn()\n File \"/opt/python/urllib3/connection.py\", line 218, in _new_conn\n raise NewConnectionError(\nurllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='eservices.solihull.gov.uk', port=443): Max retries exceeded with url: /mgInternet/mgWebService.asmx/GetCouncillorsByWard (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 519, in send\n raise ConnectionError(e, request=request)\nrequests.exceptions.ConnectionError: HTTPSConnectionPool(host='eservices.solihull.gov.uk', port=443): Max retries exceeded with url: /mgInternet/mgWebService.asmx/GetCouncillorsByWard (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))\n","start":"2024-03-22 10:05:21.314682","end":"2024-03-22 10:05:23.591857","duration":2}},{"council_id":"STG","missing":false,"latest_run":{"status_code":1,"log_text":"[09:52:45] Fetching Scraper for: STG handlers.py:23\n Begin attempting to scrape: STG handlers.py:27\n Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n[09:52:46] ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n ...data deleted. base.py:258\n Scraping from https://www.stirling.gov.uk/councillors base.py:41\n[09:52:48] list index out of range handlers.py:36\n Finished attempting to scrape: STG base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 161, in get_list_container\n return selected[0]\nIndexError: list index out of range\n","start":"2024-03-22 09:52:45.065565","end":"2024-03-22 09:52:48.679225","duration":3}},{"council_id":"THE","missing":false,"latest_run":{"status_code":1,"log_text":"[10:05:03] Fetching Scraper for: THE handlers.py:23\n Begin attempting to scrape: THE handlers.py:27\n Deleting existing data... base.py:251\n[10:05:04] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[10:05:05] ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.threerivers.gov.uk/listing/councillors \n[10:05:07] 'NoneType' object has no attribute 'findNext' handlers.py:36\n Finished attempting to scrape: THE base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"scrapers/THE-three-rivers/councillors.py\", line 15, in get_list_container\n return soup.find(\"h3\", text=\"District Councillor\").findNext(\"ul\")\nAttributeError: 'NoneType' object has no attribute 'findNext'\n","start":"2024-03-22 10:05:03.559119","end":"2024-03-22 10:05:07.289302","duration":3}},{"council_id":"TUN","missing":false,"latest_run":{"status_code":1,"log_text":"[09:37:19] Fetching Scraper for: TUN handlers.py:23\n Begin attempting to scrape: TUN handlers.py:27\n[09:37:20] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n Getting all files in Councillors/json... base.py:203\n ...found 48 files in Councillors/json base.py:219\n Getting all files in Councillors/raw... base.py:203\n ...found 48 files in Councillors/raw base.py:219\n ...found 97 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 97 files base.py:230\n[09:37:21] ...data deleted. base.py:258\n Scraping from base.py:41\n https://democracy.tunbridgewells.gov.uk/mgWebService.asmx/ \n GetCouncillorsByWard \n[09:37:22] 404 Client Error: Not Found for url: handlers.py:36\n https://democracy.tunbridgewells.gov.uk/mgError.aspx \n Finished attempting to scrape: TUN base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 50, in get\n response.raise_for_status()\n File \"/opt/python/requests/models.py\", line 1021, in raise_for_status\n raise HTTPError(http_error_msg, response=self)\nrequests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://democracy.tunbridgewells.gov.uk/mgError.aspx\n","start":"2024-03-22 09:37:19.772814","end":"2024-03-22 09:37:22.556980","duration":2}},{"council_id":"WLN","missing":false,"latest_run":{"status_code":1,"log_text":"[08:44:30] Fetching Scraper for: WLN handlers.py:23\n Begin attempting to scrape: WLN handlers.py:27\n Deleting existing data... base.py:251\n[08:44:31] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[08:44:32] ...data deleted. base.py:258\n Scraping from https://westlothian.gov.uk/councillors base.py:41\n ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n Finished attempting to scrape: WLN base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"scrapers/WLN-west-lothian/councillors.py\", line 12, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 155, in get_list_container\n self.base_url_soup = self.get_page(self.base_url)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 142, in get_page\n page = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-22 08:44:30.407337","end":"2024-03-22 08:44:32.518934","duration":2}},{"council_id":"WOC","missing":false,"latest_run":{"status_code":1,"log_text":"[10:01:27] Fetching Scraper for: WOC handlers.py:23\n Begin attempting to scrape: WOC handlers.py:27\n Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n[10:01:28] ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n ...data deleted. base.py:258\n Scraping from base.py:41\n http://committee.worcester.gov.uk/mgWebService.asmx/GetCou \n ncillorsByWard \n ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n[10:01:29] Finished attempting to scrape: WOC base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 725, in send\n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 725, in \n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 266, in resolve_redirects\n resp = self.send(\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-22 10:01:27.124816","end":"2024-03-22 10:01:29.186266","duration":2}},{"council_id":"WYC","missing":false,"latest_run":{"status_code":1,"log_text":"[08:44:03] Fetching Scraper for: WYC handlers.py:23\n Begin attempting to scrape: WYC handlers.py:27\n[08:44:04] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[08:44:05] ...data deleted. base.py:258\n Scraping from base.py:41\n http://mgov.wychavon.gov.uk/mgWebService.asmx/GetCouncillo \n rsByWard \n ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n Finished attempting to scrape: WYC base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 725, in send\n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 725, in \n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 266, in resolve_redirects\n resp = self.send(\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-22 08:44:03.773524","end":"2024-03-22 08:44:05.918430","duration":2}}] +[{"council_id":"BOT","missing":false,"latest_run":{"status_code":1,"log_text":"[10:26:04] Fetching Scraper for: BOT handlers.py:23\n Begin attempting to scrape: BOT handlers.py:27\n[10:26:05] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[10:26:06] ...data deleted. base.py:258\n Scraping from base.py:41\n http://moderngov.boston.gov.uk/mgWebService.asmx/GetCounci \n llorsByWard \n HTTPSConnectionPool(host='democracy.boston.gov.uk', handlers.py:36\n port=443): Max retries exceeded with url: \n /mgWebService.asmx/GetCouncillorsByWard (Caused by \n SSLError(SSLCertVerificationError(1, '[SSL: \n CERTIFICATE_VERIFY_FAILED] certificate verify failed: \n unable to get local issuer certificate \n (_ssl.c:1007)'))) \n Finished attempting to scrape: BOT base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\nurllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='democracy.boston.gov.uk', port=443): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 725, in send\n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 725, in \n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 266, in resolve_redirects\n resp = self.send(\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 517, in send\n raise SSLError(e, request=request)\nrequests.exceptions.SSLError: HTTPSConnectionPool(host='democracy.boston.gov.uk', port=443): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))\n","start":"2024-03-23 10:26:04.649736","end":"2024-03-23 10:26:06.771502","duration":2}},{"council_id":"CAN","missing":false,"latest_run":{"status_code":1,"log_text":"[08:58:47] Fetching Scraper for: CAN handlers.py:23\n Begin attempting to scrape: CAN handlers.py:27\n Deleting existing data... base.py:251\n[08:58:48] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[08:58:49] ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.cannockchasedc.gov.uk/council/about-council/yo \n ur-councillors \n[08:58:51] list index out of range handlers.py:36\n Finished attempting to scrape: CAN base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 161, in get_list_container\n return selected[0]\nIndexError: list index out of range\n","start":"2024-03-23 08:58:47.363070","end":"2024-03-23 08:58:51.312114","duration":3}},{"council_id":"CAT","missing":false,"latest_run":{"status_code":1,"log_text":"[08:27:52] Fetching Scraper for: CAT handlers.py:23\n Begin attempting to scrape: CAT handlers.py:27\n[08:27:53] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[08:27:54] ...data deleted. base.py:258\n Scraping from base.py:41\n http://democracy.canterbury.gov.uk/mgWebService.asmx/GetCo \n uncillorsByWard \n[08:30:05] HTTPConnectionPool(host='democracy.canterbury.gov.uk', handlers.py:36\n port=80): Max retries exceeded with url: \n /mgWebService.asmx/GetCouncillorsByWard (Caused by \n ConnectTimeoutError(, 'Connection to \n democracy.canterbury.gov.uk timed out. (connect \n timeout=None)')) \n Finished attempting to scrape: CAT base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connection.py\", line 203, in _new_conn\n sock = connection.create_connection(\n File \"/opt/python/urllib3/util/connection.py\", line 85, in create_connection\n raise err\n File \"/opt/python/urllib3/util/connection.py\", line 73, in create_connection\n sock.connect(sa)\nTimeoutError: [Errno 110] Connection timed out\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 497, in _make_request\n conn.request(\n File \"/opt/python/urllib3/connection.py\", line 395, in request\n self.endheaders()\n File \"/var/lang/lib/python3.10/http/client.py\", line 1278, in endheaders\n self._send_output(message_body, encode_chunked=encode_chunked)\n File \"/var/lang/lib/python3.10/http/client.py\", line 1038, in _send_output\n self.send(msg)\n File \"/var/lang/lib/python3.10/http/client.py\", line 976, in send\n self.connect()\n File \"/opt/python/urllib3/connection.py\", line 243, in connect\n self.sock = self._new_conn()\n File \"/opt/python/urllib3/connection.py\", line 212, in _new_conn\n raise ConnectTimeoutError(\nurllib3.exceptions.ConnectTimeoutError: (, 'Connection to democracy.canterbury.gov.uk timed out. (connect timeout=None)')\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='democracy.canterbury.gov.uk', port=80): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to democracy.canterbury.gov.uk timed out. (connect timeout=None)'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 507, in send\n raise ConnectTimeout(e, request=request)\nrequests.exceptions.ConnectTimeout: HTTPConnectionPool(host='democracy.canterbury.gov.uk', port=80): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to democracy.canterbury.gov.uk timed out. (connect timeout=None)'))\n","start":"2024-03-23 08:27:52.797890","end":"2024-03-23 08:30:05.847924","duration":133}},{"council_id":"DRS","missing":false,"latest_run":{"status_code":1,"log_text":"[10:04:41] Fetching Scraper for: DRS handlers.py:23\n Begin attempting to scrape: DRS handlers.py:27\n[10:04:42] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[10:04:43] ...data deleted. base.py:258\n Scraping from base.py:41\n http://meetings.derrycityandstrabanedistrict.com/mgWebServ \n ice.asmx/GetCouncillorsByWard \n[10:06:54] HTTPConnectionPool(host='meetings.derrycityandstrabane handlers.py:36\n district.com', port=80): Max retries exceeded with \n url: /mgWebService.asmx/GetCouncillorsByWard (Caused \n by \n ConnectTimeoutError(, 'Connection to \n meetings.derrycityandstrabanedistrict.com timed out. \n (connect timeout=None)')) \n Finished attempting to scrape: DRS base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connection.py\", line 203, in _new_conn\n sock = connection.create_connection(\n File \"/opt/python/urllib3/util/connection.py\", line 85, in create_connection\n raise err\n File \"/opt/python/urllib3/util/connection.py\", line 73, in create_connection\n sock.connect(sa)\nTimeoutError: [Errno 110] Connection timed out\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 497, in _make_request\n conn.request(\n File \"/opt/python/urllib3/connection.py\", line 395, in request\n self.endheaders()\n File \"/var/lang/lib/python3.10/http/client.py\", line 1278, in endheaders\n self._send_output(message_body, encode_chunked=encode_chunked)\n File \"/var/lang/lib/python3.10/http/client.py\", line 1038, in _send_output\n self.send(msg)\n File \"/var/lang/lib/python3.10/http/client.py\", line 976, in send\n self.connect()\n File \"/opt/python/urllib3/connection.py\", line 243, in connect\n self.sock = self._new_conn()\n File \"/opt/python/urllib3/connection.py\", line 212, in _new_conn\n raise ConnectTimeoutError(\nurllib3.exceptions.ConnectTimeoutError: (, 'Connection to meetings.derrycityandstrabanedistrict.com timed out. (connect timeout=None)')\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='meetings.derrycityandstrabanedistrict.com', port=80): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to meetings.derrycityandstrabanedistrict.com timed out. (connect timeout=None)'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 507, in send\n raise ConnectTimeout(e, request=request)\nrequests.exceptions.ConnectTimeout: HTTPConnectionPool(host='meetings.derrycityandstrabanedistrict.com', port=80): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to meetings.derrycityandstrabanedistrict.com timed out. (connect timeout=None)'))\n","start":"2024-03-23 10:04:41.808314","end":"2024-03-23 10:06:54.806774","duration":132}},{"council_id":"ELS","missing":false,"latest_run":{"status_code":1,"log_text":"[10:21:31] Fetching Scraper for: ELS handlers.py:23\n Begin attempting to scrape: ELS handlers.py:27\n[10:21:33] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[10:21:34] ...data deleted. base.py:258\n Scraping from base.py:41\n https://cne-siar.gov.uk/home/your-council/council-members/ \n[10:21:37] Scraping from https://cne-siar.gov.uk/kenneth-j-maclean/ base.py:41\n[10:21:39] 'NoneType' object has no attribute 'get_text' handlers.py:36\n Finished attempting to scrape: ELS base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 58, in run\n councillor = self.get_single_councillor(councillor_html)\n File \"scrapers/ELS-na-h-eileanan-an-iar/councillors.py\", line 25, in get_single_councillor\n .get_text(strip=True)\nAttributeError: 'NoneType' object has no attribute 'get_text'\n","start":"2024-03-23 10:21:31.347340","end":"2024-03-23 10:21:39.422879","duration":8}},{"council_id":"ERW","missing":false,"latest_run":{"status_code":1,"log_text":"[08:26:51] Fetching Scraper for: ERW handlers.py:23\n Begin attempting to scrape: ERW handlers.py:27\n Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n[08:26:52] ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.eastrenfrewshire.gov.uk/Find-my-councillor \n ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n[08:26:53] Finished attempting to scrape: ERW base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 155, in get_list_container\n self.base_url_soup = self.get_page(self.base_url)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 142, in get_page\n page = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-23 08:26:51.150706","end":"2024-03-23 08:26:53.176000","duration":2}},{"council_id":"ESS","missing":false,"latest_run":{"status_code":1,"log_text":"[09:22:21] Fetching Scraper for: ESS handlers.py:23\n Begin attempting to scrape: ESS handlers.py:27\n Deleting existing data... base.py:251\n[09:22:22] Getting all files in Councillors... base.py:203\n Getting all files in Councillors/json... base.py:203\n ...found 33 files in Councillors/json base.py:219\n Getting all files in Councillors/raw... base.py:203\n ...found 33 files in Councillors/raw base.py:219\n ...found 67 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 67 files base.py:230\n[09:22:23] ...data deleted. base.py:258\n Scraping from base.py:41\n http://cmis.essex.gov.uk/EssexCmis5/Councillors.aspx \n[09:22:25] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/655/ScreenMode/Ward/Default. \n aspx \n[09:22:28] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/327/ScreenMode/Ward/Default. \n aspx \n[09:22:30] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/100/ScreenMode/Ward/Default. \n aspx \n[09:22:33] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/639/ScreenMode/Ward/Default. \n aspx \n[09:22:36] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/882/ScreenMode/Ward/Default. \n aspx \n[09:22:38] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/880/ScreenMode/Ward/Default. \n aspx \n[09:22:40] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/879/ScreenMode/Ward/Default. \n aspx \n[09:22:42] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/648/ScreenMode/Ward/Default. \n aspx \n[09:22:46] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/80/ScreenMode/Ward/Default.a \n spx \n[09:22:48] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/649/ScreenMode/Ward/Default. \n aspx \n[09:22:50] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/866/ScreenMode/Ward/Default. \n aspx \n[09:22:52] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/458/ScreenMode/Ward/Default. \n aspx \n[09:22:56] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/864/ScreenMode/Ward/Default. \n aspx \n[09:22:59] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/887/ScreenMode/Ward/Default. \n aspx \n[09:23:01] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/334/ScreenMode/Ward/Default. \n aspx \n[09:23:03] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/650/ScreenMode/Ward/Default. \n aspx \n[09:23:06] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/364/ScreenMode/Ward/Default. \n aspx \n[09:23:09] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/863/ScreenMode/Ward/Default. \n aspx \n[09:23:11] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/309/ScreenMode/Ward/Default. \n aspx \n[09:23:15] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/91/ScreenMode/Ward/Default.a \n spx \n[09:23:17] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/877/ScreenMode/Ward/Default. \n aspx \n[09:23:20] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/777/ScreenMode/Ward/Default. \n aspx \n[09:23:22] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/865/ScreenMode/Ward/Default. \n aspx \n[09:23:24] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/359/ScreenMode/Ward/Default. \n aspx \n[09:23:26] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/870/ScreenMode/Ward/Default. \n aspx \n[09:23:28] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/340/ScreenMode/Ward/Default. \n aspx \n[09:23:31] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/94/ScreenMode/Ward/Default.a \n spx \n[09:23:35] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/883/ScreenMode/Ward/Default. \n aspx \n[09:23:38] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/656/ScreenMode/Ward/Default. \n aspx \n[09:23:42] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/872/ScreenMode/Ward/Default. \n aspx \n[09:23:46] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/117/ScreenMode/Ward/Default. \n aspx \n[09:23:49] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/889/ScreenMode/Ward/Default. \n aspx \n[09:23:51] Scraping from base.py:41\n http://cmis.essex.gov.uk/essexcmis5/Councillors/tabid/62/c \n tl/ViewCMIS_Person/mid/480/id/610/ScreenMode/Ward/Default. \n aspx \n[09:23:54] 'title' handlers.py:36\n Committing batch 1 consisting of 66 files base.py:291\n[09:23:55] Finished attempting to scrape: ESS base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 58, in run\n councillor = self.get_single_councillor(councillor_html)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 306, in get_single_councillor\n party = self.get_party_name(list_page_html)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 287, in get_party_name\n list_page_html.find_all(\"img\")[-1][\"title\"]\n File \"/opt/python/bs4/element.py\", line 1573, in __getitem__\n return self.attrs[key]\nKeyError: 'title'\n","start":"2024-03-23 09:22:21.243092","end":"2024-03-23 09:23:55.599150","duration":94}},{"council_id":"GRE","missing":false,"latest_run":{"status_code":1,"log_text":"[10:04:23] Fetching Scraper for: GRE handlers.py:23\n Begin attempting to scrape: GRE handlers.py:27\n Deleting existing data... base.py:251\n[10:04:24] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[10:04:25] ...data deleted. base.py:258\n Scraping from base.py:41\n https://committees.royalgreenwich.gov.uk/Councillors/tabid \n /63/ScreenMode/Alphabetical/Default.aspx \n HTTPSConnectionPool(host='committees.royalgreenwich.go handlers.py:36\n v.uk', port=443): Max retries exceeded with url: \n /Councillors/tabid/63/ScreenMode/Alphabetical/Default. \n aspx (Caused by SSLError(SSLCertVerificationError(1, \n '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify \n failed: unable to get local issuer certificate \n (_ssl.c:1007)'))) \n Finished attempting to scrape: GRE base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\nurllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='committees.royalgreenwich.gov.uk', port=443): Max retries exceeded with url: /Councillors/tabid/63/ScreenMode/Alphabetical/Default.aspx (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 277, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 517, in send\n raise SSLError(e, request=request)\nrequests.exceptions.SSLError: HTTPSConnectionPool(host='committees.royalgreenwich.gov.uk', port=443): Max retries exceeded with url: /Councillors/tabid/63/ScreenMode/Alphabetical/Default.aspx (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))\n","start":"2024-03-23 10:04:23.378880","end":"2024-03-23 10:04:25.576848","duration":2}},{"council_id":"GRT","missing":false,"latest_run":{"status_code":1,"log_text":"[10:13:10] Fetching Scraper for: GRT handlers.py:23\n Begin attempting to scrape: GRT handlers.py:27\n Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n[10:13:11] ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n ...data deleted. base.py:258\n Scraping from base.py:41\n https://www2.guildford.gov.uk/councilmeetings/mgWebService \n .asmx/GetCouncillorsByWard \n[10:13:12] HTTPSConnectionPool(host='www2.guildford.gov.uk', handlers.py:36\n port=443): Max retries exceeded with url: \n /councilmeetings/mgWebService.asmx/GetCouncillorsByWar \n d (Caused by \n NameResolutionError(\": Failed to resolve \n 'www2.guildford.gov.uk' ([Errno -2] Name or service \n not known)\")) \n Finished attempting to scrape: GRT base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connection.py\", line 203, in _new_conn\n sock = connection.create_connection(\n File \"/opt/python/urllib3/util/connection.py\", line 60, in create_connection\n for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):\n File \"/var/lang/lib/python3.10/socket.py\", line 955, in getaddrinfo\n for res in _socket.getaddrinfo(host, port, family, type, proto, flags):\nsocket.gaierror: [Errno -2] Name or service not known\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 611, in connect\n self.sock = sock = self._new_conn()\n File \"/opt/python/urllib3/connection.py\", line 210, in _new_conn\n raise NameResolutionError(self.host, self, e) from e\nurllib3.exceptions.NameResolutionError: : Failed to resolve 'www2.guildford.gov.uk' ([Errno -2] Name or service not known)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www2.guildford.gov.uk', port=443): Max retries exceeded with url: /councilmeetings/mgWebService.asmx/GetCouncillorsByWard (Caused by NameResolutionError(\": Failed to resolve 'www2.guildford.gov.uk' ([Errno -2] Name or service not known)\"))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 519, in send\n raise ConnectionError(e, request=request)\nrequests.exceptions.ConnectionError: HTTPSConnectionPool(host='www2.guildford.gov.uk', port=443): Max retries exceeded with url: /councilmeetings/mgWebService.asmx/GetCouncillorsByWard (Caused by NameResolutionError(\": Failed to resolve 'www2.guildford.gov.uk' ([Errno -2] Name or service not known)\"))\n","start":"2024-03-23 10:13:10.025314","end":"2024-03-23 10:13:12.285195","duration":2}},{"council_id":"HLD","missing":false,"latest_run":{"status_code":1,"log_text":"[09:45:09] Fetching Scraper for: HLD handlers.py:23\n Begin attempting to scrape: HLD handlers.py:27\n Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n Getting all files in Councillors/json... base.py:203\n[09:45:10] ...found 72 files in Councillors/json base.py:219\n Getting all files in Councillors/raw... base.py:203\n ...found 72 files in Councillors/raw base.py:219\n ...found 145 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 100 files base.py:230\n[09:45:11] Deleting batch no. 2 consisting of 45 files base.py:230\n ...data deleted. base.py:258\n Scraping from https://www.highland.gov.uk/councillors/name base.py:41\n[09:45:13] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/102/sarah_atkin \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/110/michael_baird \n[09:45:14] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/94/andrew_baldrey \n[09:45:15] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/100/chris_ballance \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/120/chris_birt \n[09:45:16] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/41/bill_boyd \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/8/raymond_bremner \n[09:45:17] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/30/ian_brown \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/79/john_bruce \n[09:45:18] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/117/michael_camero \n n \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/17/isabelle_biz_ca \n mpbell \n[09:45:19] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/82/glynis_campbell \n _sinclair \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/35/alasdair_christ \n ie \n[09:45:20] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/40/muriel_cockburn \n[09:45:21] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/124/tamala_collier \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/101/helen_crawford \n[09:45:22] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/83/sarah_fanet \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/71/john_finlayson \n[09:45:23] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/29/david_fraser \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/47/laurie_fraser \n[09:45:24] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/10/richard_gale \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/51/ken_gowans \n[09:45:25] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/95/john_grafton \n[09:45:26] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/52/alex_graham \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/130/michael_green \n[09:45:27] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/128/david_gregg \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/114/ron_gunn \n[09:45:28] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/123/jackie_hendry \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/111/marianne_hutch \n ison \n[09:45:29] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/68/andrew_jarvie \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/131/barbara_jarvie \n[09:45:30] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/103/lyndsey_johnst \n on \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/109/russell_jones \n[09:45:31] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/99/sean_kennedy \n[09:45:32] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/86/emma_knox \n[09:45:33] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/121/liz_kraft \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/61/bill_lobban \n[09:45:34] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/122/patrick_logue \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/78/derek_louden \n[09:45:35] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/105/morven-may_mac \n callum \n[09:45:36] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/112/angus_macdonal \n d \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/12/willie_mackay \n[09:45:37] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/64/graham_mackenzi \n e \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/39/isabelle_macken \n zie \n[09:45:38] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/11/struan_mackie \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/125/andrew_mackint \n osh \n[09:45:39] Committing batch 1 consisting of 92 files base.py:291\n[09:45:40] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/98/ryan_mackintosh \n[09:45:41] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/66/angela_maclean \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/119/kate_maclean \n[09:45:42] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/113/thomas_maclenn \n an \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/37/duncan_macphers \n on \n[09:45:43] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/69/bet_mcallister \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/116/jan_mcewan \n[09:45:44] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/14/jim_mcgillivray \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/107/drew_millar \n[09:45:45] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/2/hugh_morrison \n[09:45:46] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/45/calum_munro \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/20/pauline_munro \n[09:45:47] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/118/leslie-anne_ni \n ven \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/126/molly_nolan \n[09:45:48] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/132/paul_oldham \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/75/margaret_paters \n on \n[09:45:49] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/129/morven_reid \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/13/matthew_reiss \n[09:45:50] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/89/alasdair_rhind \n[09:45:51] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/87/trish_robertson \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/6/karl_rosie \n[09:45:52] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/133/maureen_ross \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/97/liz_saggers \n[09:45:53] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/7/andrew_sinclair \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/53/maxine_smith \n[09:45:54] Scraping from base.py:41\n https://www.highland.gov.uk/councillors/108/ruraidh_stewar \n t \n Scraping from base.py:41\n https://www.highland.gov.uk/councillors/81/position_vacant \n[09:45:55] 'NoneType' object has no attribute 'get_text' handlers.py:36\n Committing batch 2 consisting of 52 files base.py:291\n[09:45:56] Finished attempting to scrape: HLD base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 58, in run\n councillor = self.get_single_councillor(councillor_html)\n File \"scrapers/HLD-highland/councillors.py\", line 49, in get_single_councillor\n councillor.email = soup.select_one(\"li a[href^=mailto]\").get_text(\nAttributeError: 'NoneType' object has no attribute 'get_text'\n","start":"2024-03-23 09:45:09.048927","end":"2024-03-23 09:45:56.612433","duration":47}},{"council_id":"LEC","missing":false,"latest_run":{"status_code":1,"log_text":"[08:30:46] Fetching Scraper for: LEC handlers.py:23\n Begin attempting to scrape: LEC handlers.py:27\n Deleting existing data... base.py:251\n[08:30:47] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n ...data deleted. base.py:258\n Scraping from base.py:41\n http://politics.leics.gov.uk//mgWebService.asmx/GetCouncil \n lorsByWard \n HTTPConnectionPool(host='politics.leics.gov.uk', handlers.py:36\n port=80): Max retries exceeded with url: \n //mgWebService.asmx/GetCouncillorsByWard (Caused by \n NewConnectionError(': Failed to establish a new \n connection: [Errno 111] Connection refused')) \n[08:30:48] Finished attempting to scrape: LEC base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connection.py\", line 203, in _new_conn\n sock = connection.create_connection(\n File \"/opt/python/urllib3/util/connection.py\", line 85, in create_connection\n raise err\n File \"/opt/python/urllib3/util/connection.py\", line 73, in create_connection\n sock.connect(sa)\nConnectionRefusedError: [Errno 111] Connection refused\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 497, in _make_request\n conn.request(\n File \"/opt/python/urllib3/connection.py\", line 395, in request\n self.endheaders()\n File \"/var/lang/lib/python3.10/http/client.py\", line 1278, in endheaders\n self._send_output(message_body, encode_chunked=encode_chunked)\n File \"/var/lang/lib/python3.10/http/client.py\", line 1038, in _send_output\n self.send(msg)\n File \"/var/lang/lib/python3.10/http/client.py\", line 976, in send\n self.connect()\n File \"/opt/python/urllib3/connection.py\", line 243, in connect\n self.sock = self._new_conn()\n File \"/opt/python/urllib3/connection.py\", line 218, in _new_conn\n raise NewConnectionError(\nurllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='politics.leics.gov.uk', port=80): Max retries exceeded with url: //mgWebService.asmx/GetCouncillorsByWard (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 519, in send\n raise ConnectionError(e, request=request)\nrequests.exceptions.ConnectionError: HTTPConnectionPool(host='politics.leics.gov.uk', port=80): Max retries exceeded with url: //mgWebService.asmx/GetCouncillorsByWard (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))\n","start":"2024-03-23 08:30:46.348936","end":"2024-03-23 08:30:48.236773","duration":1}},{"council_id":"MAV","missing":false,"latest_run":{"status_code":1,"log_text":"[10:03:53] Fetching Scraper for: MAV handlers.py:23\n Begin attempting to scrape: MAV handlers.py:27\n Deleting existing data... base.py:251\n[10:03:54] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[10:03:55] ...data deleted. base.py:258\n Scraping from base.py:41\n http://moderngov.malvernhills.gov.uk/mgWebService.asmx/Get \n CouncillorsByWard \n ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n Finished attempting to scrape: MAV base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 725, in send\n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 725, in \n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 266, in resolve_redirects\n resp = self.send(\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-23 10:03:53.556115","end":"2024-03-23 10:03:55.701472","duration":2}},{"council_id":"MOL","missing":false,"latest_run":{"status_code":1,"log_text":"[08:18:07] Fetching Scraper for: MOL handlers.py:23\n Begin attempting to scrape: MOL handlers.py:27\n Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n[08:18:08] ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.molevalley.gov.uk/home/council/councillors/who \n -are-your-councillors \n[08:18:12] 404 Client Error: Not Found for url: handlers.py:36\n https://www.molevalley.gov.uk/home/council/councillors \n /who-are-your-councillors \n Finished attempting to scrape: MOL base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 155, in get_list_container\n self.base_url_soup = self.get_page(self.base_url)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 142, in get_page\n page = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 50, in get\n response.raise_for_status()\n File \"/opt/python/requests/models.py\", line 1021, in raise_for_status\n raise HTTPError(http_error_msg, response=self)\nrequests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://www.molevalley.gov.uk/home/council/councillors/who-are-your-councillors\n","start":"2024-03-23 08:18:07.061806","end":"2024-03-23 08:18:12.254100","duration":5}},{"council_id":"MTY","missing":false,"latest_run":{"status_code":1,"log_text":"[09:05:59] Fetching Scraper for: MTY handlers.py:23\n[09:06:00] Begin attempting to scrape: MTY handlers.py:27\n Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[09:06:01] ...data deleted. base.py:258\n Scraping from base.py:41\n http://democracy.merthyr.gov.uk/mgWebService.asmx/GetCounc \n illorsByWard \n ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n[09:06:02] Finished attempting to scrape: MTY base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 725, in send\n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 725, in \n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 266, in resolve_redirects\n resp = self.send(\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-23 09:05:59.977232","end":"2024-03-23 09:06:02.099203","duration":2}},{"council_id":"NHE","missing":false,"latest_run":{"status_code":1,"log_text":"[09:18:00] Fetching Scraper for: NHE handlers.py:23\n Begin attempting to scrape: NHE handlers.py:27\n Deleting existing data... base.py:251\n[09:18:01] Getting all files in Councillors... base.py:203\n Getting all files in Councillors/json... base.py:203\n ...found 49 files in Councillors/json base.py:219\n Getting all files in Councillors/raw... base.py:203\n ...found 49 files in Councillors/raw base.py:219\n ...found 99 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 99 files base.py:230\n[09:18:02] ...data deleted. base.py:258\n Scraping from base.py:41\n https://democracy.north-herts.gov.uk/mgWebService.asmx/Get \n CouncillorsByWard \n[09:20:12] HTTPSConnectionPool(host='democracy.north-herts.gov.uk handlers.py:36\n ', port=443): Max retries exceeded with url: \n /mgWebService.asmx/GetCouncillorsByWard (Caused by \n ConnectTimeoutError(, 'Connection to \n democracy.north-herts.gov.uk timed out. (connect \n timeout=None)')) \n[09:20:13] Finished attempting to scrape: NHE base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connection.py\", line 203, in _new_conn\n sock = connection.create_connection(\n File \"/opt/python/urllib3/util/connection.py\", line 85, in create_connection\n raise err\n File \"/opt/python/urllib3/util/connection.py\", line 73, in create_connection\n sock.connect(sa)\nTimeoutError: [Errno 110] Connection timed out\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 611, in connect\n self.sock = sock = self._new_conn()\n File \"/opt/python/urllib3/connection.py\", line 212, in _new_conn\n raise ConnectTimeoutError(\nurllib3.exceptions.ConnectTimeoutError: (, 'Connection to democracy.north-herts.gov.uk timed out. (connect timeout=None)')\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='democracy.north-herts.gov.uk', port=443): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to democracy.north-herts.gov.uk timed out. (connect timeout=None)'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 507, in send\n raise ConnectTimeout(e, request=request)\nrequests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='democracy.north-herts.gov.uk', port=443): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by ConnectTimeoutError(, 'Connection to democracy.north-herts.gov.uk timed out. (connect timeout=None)'))\n","start":"2024-03-23 09:18:00.438744","end":"2024-03-23 09:20:13.090604","duration":132}},{"council_id":"NUN","missing":false,"latest_run":{"status_code":1,"log_text":"[09:28:48] Fetching Scraper for: NUN handlers.py:23\n Begin attempting to scrape: NUN handlers.py:27\n[09:28:49] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[09:28:50] ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.nuneatonandbedworth.gov.uk/councillors/name \n 404 Client Error: Not Found for url: handlers.py:36\n https://www.nuneatonandbedworth.gov.uk/councillors/nam \n e \n Finished attempting to scrape: NUN base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 155, in get_list_container\n self.base_url_soup = self.get_page(self.base_url)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 142, in get_page\n page = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 50, in get\n response.raise_for_status()\n File \"/opt/python/requests/models.py\", line 1021, in raise_for_status\n raise HTTPError(http_error_msg, response=self)\nrequests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://www.nuneatonandbedworth.gov.uk/councillors/name\n","start":"2024-03-23 09:28:48.743843","end":"2024-03-23 09:28:50.820613","duration":2}},{"council_id":"ORK","missing":false,"latest_run":{"status_code":1,"log_text":"[10:27:57] Fetching Scraper for: ORK handlers.py:23\n Begin attempting to scrape: ORK handlers.py:27\n Deleting existing data... base.py:251\n[10:27:58] Getting all files in Councillors... base.py:203\n Getting all files in Councillors/json... base.py:203\n ...found 16 files in Councillors/json base.py:219\n Getting all files in Councillors/raw... base.py:203\n ...found 16 files in Councillors/raw base.py:219\n ...found 33 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 33 files base.py:230\n[10:27:59] ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/councillors. \n htm \n[10:28:00] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/james-moar.h \n tm \n[10:28:01] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/raymie-peace \n .htm \n[10:28:02] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/gillian-skus \n e.htm \n[10:28:03] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/david-dawson \n .htm \n Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/Steven-Heddl \n e.htm \n[10:28:04] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/john-ross-sc \n ott.htm \n[10:28:05] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/gwenda-shear \n er.htm \n[10:28:06] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/sandy-cowie. \n htm \n[10:28:07] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/kristopher-l \n eask.htm \n Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/leslie-manso \n n.htm \n[10:28:08] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/ivan-taylor. \n htm \n[10:28:09] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/stephen-clac \n kson.htm \n[10:28:10] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/mellissa-tho \n mson.htm \n[10:28:11] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/heather-wood \n bridge.htm \n Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/graham-bevan \n .htm \n[10:28:12] Scraping from base.py:41\n https://www.orkney.gov.uk/Council/Councillors/lindsay-hall \n .htm \n[10:28:13] 'NoneType' object is not subscriptable handlers.py:36\n Committing batch 1 consisting of 32 files base.py:291\n[10:28:14] Finished attempting to scrape: ORK base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 58, in run\n councillor = self.get_single_councillor(councillor_html)\n File \"scrapers/ORK-orkney-islands/councillors.py\", line 16, in get_single_councillor\n url = urljoin(self.base_url, councillor_html.a[\"href\"])\nTypeError: 'NoneType' object is not subscriptable\n","start":"2024-03-23 10:27:57.442572","end":"2024-03-23 10:28:14.627394","duration":17}},{"council_id":"ROS","missing":false,"latest_run":{"status_code":1,"log_text":"[09:42:38] Fetching Scraper for: ROS handlers.py:23\n Begin attempting to scrape: ROS handlers.py:27\n[09:42:39] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n Getting all files in Councillors/json... base.py:203\n ...found 35 files in Councillors/json base.py:219\n Getting all files in Councillors/raw... base.py:203\n ...found 35 files in Councillors/raw base.py:219\n ...found 71 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 71 files base.py:230\n[09:42:40] ...data deleted. base.py:258\n Scraping from https://www.rossendale.gov.uk/councillors base.py:41\n[09:42:42] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10079/adrian-lyt \n hgoe \n[09:42:43] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10084/alan-neal \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10093/alan-woods \n[09:42:44] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10062/alyson-bar \n nes \n[09:42:45] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10095/andrew-wal \n msley \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10080/andy-macna \n e \n[09:42:46] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10102/ann-hodgki \n ss \n[09:42:47] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10077/ann-kenyon \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10065/anne-cartn \n er-cheetham \n[09:42:48] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10097/annie-mcma \n hon \n[09:42:49] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10061/barbara-as \n hworth \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10101/caroline-s \n nowden \n[09:42:50] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10103/christine- \n gill \n[09:42:51] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10107/danielle-a \n shworth \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10070/david-foxc \n roft \n[09:42:52] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10096/dayne-powe \n ll \n[09:42:53] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10071/gemma-rook \n e \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10083/granville- \n morris \n[09:42:54] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10085/jacqueline \n -oakes \n[09:42:56] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10067/james-eato \n n \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10060/janet-whit \n ehead \n[09:42:57] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10075/janice-joh \n nson \n[09:42:58] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10064/jenny-rigb \n y \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10105/judith-dri \n ver \n[09:42:59] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10088/julie-adsh \n ead \n[09:43:00] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10087/laura-beth \n -thompson \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10100/liz-mcinne \n s \n[09:43:01] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10086/marilyn-pr \n octer \n[09:43:02] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10099/mary-cooga \n n \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10106/matt-norto \n n \n[09:43:03] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10098/michelle-s \n mith \n[09:43:04] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10104/neil-looke \n r \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10081/patrick-ma \n rriott \n[09:43:05] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10072/samara-bar \n nes \n[09:43:06] Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10063/scott-smit \n h \n Scraping from base.py:41\n https://www.rossendale.gov.uk/councillors/10074/vacant-vac \n ant \n[09:43:07] 'NoneType' object is not subscriptable handlers.py:36\n Committing batch 1 consisting of 70 files base.py:291\n[09:43:08] Finished attempting to scrape: ROS base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 58, in run\n councillor = self.get_single_councillor(councillor_html)\n File \"scrapers/ROS-rossendale/councillors.py\", line 48, in get_single_councillor\n councillor.email = soup.select_one(\".page-meta a[href^=mailto]\")[\nTypeError: 'NoneType' object is not subscriptable\n","start":"2024-03-23 09:42:38.613720","end":"2024-03-23 09:43:08.692979","duration":30}},{"council_id":"SAY","missing":false,"latest_run":{"status_code":1,"log_text":"[08:59:11] Fetching Scraper for: SAY handlers.py:23\n Begin attempting to scrape: SAY handlers.py:27\n Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n[08:59:12] ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.south-ayrshire.gov.uk/councillors/ \n[08:59:13] ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n Finished attempting to scrape: SAY base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 155, in get_list_container\n self.base_url_soup = self.get_page(self.base_url)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 142, in get_page\n page = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-23 08:59:11.204459","end":"2024-03-23 08:59:13.321409","duration":2}},{"council_id":"SHE","missing":false,"latest_run":{"status_code":null,"log_text":"[11:28:20] Fetching Scraper for: SHE handlers.py:22\n Begin attempting to scrape: SHE handlers.py:25\n Deleting existing data... base.py:234\n Getting all files in SHE... base.py:186\n[11:28:21] Getting all files in SHE/json... base.py:186\n ...found 30 files in SHE/json base.py:202\n Getting all files in SHE/raw... base.py:186\n ...found 30 files in SHE/raw base.py:202\n ...found 61 files in SHE base.py:202\n Deleting batch no. 1 consisting of 61 files base.py:211\n[11:28:32] An error occurred (ThrottlingException) when calling handlers.py:34\n the CreateCommit operation (reached max retries: 4): \n Rate exceeded \n Finished attempting to scrape: SHE base.py:319\n","errors":"An error occurred (ThrottlingException) when calling the CreateCommit operation (reached max retries: 4): Rate exceeded","start":"2022-04-04 11:28:20.509898","end":"2022-04-04 11:28:32.871624","duration":12}},{"council_id":"SHO","missing":false,"latest_run":{"status_code":1,"log_text":"[09:45:02] Fetching Scraper for: SHO handlers.py:23\n Begin attempting to scrape: SHO handlers.py:27\n[09:45:03] Deleting existing data... base.py:251\n[09:45:04] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[09:45:05] ...data deleted. base.py:258\n Scraping from base.py:41\n https://democracy.sholland.gov.uk/mgWebService.asmx/GetCou \n ncillorsByWard \n HTTPSConnectionPool(host='democracy.sholland.gov.uk', handlers.py:36\n port=443): Max retries exceeded with url: \n /mgWebService.asmx/GetCouncillorsByWard (Caused by \n SSLError(SSLCertVerificationError(1, '[SSL: \n CERTIFICATE_VERIFY_FAILED] certificate verify failed: \n unable to get local issuer certificate \n (_ssl.c:1007)'))) \n Finished attempting to scrape: SHO base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\nurllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='democracy.sholland.gov.uk', port=443): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 517, in send\n raise SSLError(e, request=request)\nrequests.exceptions.SSLError: HTTPSConnectionPool(host='democracy.sholland.gov.uk', port=443): Max retries exceeded with url: /mgWebService.asmx/GetCouncillorsByWard (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))\n","start":"2024-03-23 09:45:02.288373","end":"2024-03-23 09:45:05.394750","duration":3}},{"council_id":"SOL","missing":false,"latest_run":{"status_code":1,"log_text":"[09:27:00] Fetching Scraper for: SOL handlers.py:23\n Begin attempting to scrape: SOL handlers.py:27\n Deleting existing data... base.py:251\n[09:27:01] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[09:27:02] ...data deleted. base.py:258\n Scraping from base.py:41\n https://eservices.solihull.gov.uk/mgInternet/mgWebService. \n asmx/GetCouncillorsByWard \n HTTPSConnectionPool(host='eservices.solihull.gov.uk', handlers.py:36\n port=443): Max retries exceeded with url: \n /mgInternet/mgWebService.asmx/GetCouncillorsByWard \n (Caused by \n NewConnectionError(': Failed to establish a new \n connection: [Errno 111] Connection refused')) \n Finished attempting to scrape: SOL base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connection.py\", line 203, in _new_conn\n sock = connection.create_connection(\n File \"/opt/python/urllib3/util/connection.py\", line 85, in create_connection\n raise err\n File \"/opt/python/urllib3/util/connection.py\", line 73, in create_connection\n sock.connect(sa)\nConnectionRefusedError: [Errno 111] Connection refused\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 611, in connect\n self.sock = sock = self._new_conn()\n File \"/opt/python/urllib3/connection.py\", line 218, in _new_conn\n raise NewConnectionError(\nurllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 515, in increment\n raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]\nurllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='eservices.solihull.gov.uk', port=443): Max retries exceeded with url: /mgInternet/mgWebService.asmx/GetCouncillorsByWard (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 519, in send\n raise ConnectionError(e, request=request)\nrequests.exceptions.ConnectionError: HTTPSConnectionPool(host='eservices.solihull.gov.uk', port=443): Max retries exceeded with url: /mgInternet/mgWebService.asmx/GetCouncillorsByWard (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))\n","start":"2024-03-23 09:27:00.378076","end":"2024-03-23 09:27:02.439227","duration":2}},{"council_id":"STG","missing":false,"latest_run":{"status_code":1,"log_text":"[08:42:45] Fetching Scraper for: STG handlers.py:23\n Begin attempting to scrape: STG handlers.py:27\n Deleting existing data... base.py:251\n[08:42:46] Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[08:42:47] ...data deleted. base.py:258\n Scraping from https://www.stirling.gov.uk/councillors base.py:41\n[08:42:48] list index out of range handlers.py:36\n Finished attempting to scrape: STG base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 161, in get_list_container\n return selected[0]\nIndexError: list index out of range\n","start":"2024-03-23 08:42:45.453184","end":"2024-03-23 08:42:48.810364","duration":3}},{"council_id":"THE","missing":false,"latest_run":{"status_code":1,"log_text":"[08:22:52] Fetching Scraper for: THE handlers.py:23\n Begin attempting to scrape: THE handlers.py:27\n[08:22:53] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[08:22:54] ...data deleted. base.py:258\n Scraping from base.py:41\n https://www.threerivers.gov.uk/listing/councillors \n[08:22:56] 'NoneType' object has no attribute 'findNext' handlers.py:36\n Finished attempting to scrape: THE base.py:339\n","errors":"Traceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"/var/task/lgsf/councillors/scrapers.py\", line 164, in get_councillors\n container = self.get_list_container()\n File \"scrapers/THE-three-rivers/councillors.py\", line 15, in get_list_container\n return soup.find(\"h3\", text=\"District Councillor\").findNext(\"ul\")\nAttributeError: 'NoneType' object has no attribute 'findNext'\n","start":"2024-03-23 08:22:52.871569","end":"2024-03-23 08:22:56.314449","duration":3}},{"council_id":"WLN","missing":false,"latest_run":{"status_code":1,"log_text":"[10:17:40] Fetching Scraper for: WLN handlers.py:23\n Begin attempting to scrape: WLN handlers.py:27\n Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n[10:17:41] ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n ...data deleted. base.py:258\n Scraping from https://westlothian.gov.uk/councillors base.py:41\n ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n[10:17:42] Finished attempting to scrape: WLN base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 56, in run\n for councillor_html in self.get_councillors():\n File \"scrapers/WLN-west-lothian/councillors.py\", line 12, in get_councillors\n container = self.get_list_container()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 155, in get_list_container\n self.base_url_soup = self.get_page(self.base_url)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 142, in get_page\n page = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-23 10:17:40.053166","end":"2024-03-23 10:17:42.146254","duration":2}},{"council_id":"WOC","missing":false,"latest_run":{"status_code":1,"log_text":"[08:42:28] Fetching Scraper for: WOC handlers.py:23\n Begin attempting to scrape: WOC handlers.py:27\n Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[08:42:29] ...data deleted. base.py:258\n Scraping from base.py:41\n http://committee.worcester.gov.uk/mgWebService.asmx/GetCou \n ncillorsByWard \n ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n[08:42:30] Finished attempting to scrape: WOC base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 725, in send\n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 725, in \n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 266, in resolve_redirects\n resp = self.send(\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-23 08:42:28.026221","end":"2024-03-23 08:42:30.122846","duration":2}},{"council_id":"WYC","missing":false,"latest_run":{"status_code":1,"log_text":"[09:34:19] Fetching Scraper for: WYC handlers.py:23\n Begin attempting to scrape: WYC handlers.py:27\n[09:34:20] Deleting existing data... base.py:251\n Getting all files in Councillors... base.py:203\n ...found 1 files in Councillors base.py:219\n Deleting batch no. 1 consisting of 1 files base.py:230\n[09:34:21] ...data deleted. base.py:258\n Scraping from base.py:41\n http://mgov.wychavon.gov.uk/mgWebService.asmx/GetCouncillo \n rsByWard \n ('Connection aborted.', ConnectionResetError(104, handlers.py:36\n 'Connection reset by peer')) \n[09:34:22] Finished attempting to scrape: WYC base.py:339\n","errors":"Traceback (most recent call last):\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nConnectionResetError: [Errno 104] Connection reset by peer\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/opt/python/requests/adapters.py\", line 486, in send\n resp = conn.urlopen(\n File \"/opt/python/urllib3/connectionpool.py\", line 845, in urlopen\n retries = retries.increment(\n File \"/opt/python/urllib3/util/retry.py\", line 470, in increment\n raise reraise(type(error), error, _stacktrace)\n File \"/opt/python/urllib3/util/util.py\", line 38, in reraise\n raise value.with_traceback(tb)\n File \"/opt/python/urllib3/connectionpool.py\", line 791, in urlopen\n response = self._make_request(\n File \"/opt/python/urllib3/connectionpool.py\", line 492, in _make_request\n raise new_e\n File \"/opt/python/urllib3/connectionpool.py\", line 468, in _make_request\n self._validate_conn(conn)\n File \"/opt/python/urllib3/connectionpool.py\", line 1097, in _validate_conn\n conn.connect()\n File \"/opt/python/urllib3/connection.py\", line 642, in connect\n sock_and_verified = _ssl_wrap_socket_and_match_hostname(\n File \"/opt/python/urllib3/connection.py\", line 783, in _ssl_wrap_socket_and_match_hostname\n ssl_sock = ssl_wrap_socket(\n File \"/opt/python/urllib3/util/ssl_.py\", line 471, in ssl_wrap_socket\n ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)\n File \"/opt/python/urllib3/util/ssl_.py\", line 515, in _ssl_wrap_socket_impl\n return ssl_context.wrap_socket(sock, server_hostname=server_hostname)\n File \"/var/lang/lib/python3.10/ssl.py\", line 513, in wrap_socket\n return self.sslsocket_class._create(\n File \"/var/lang/lib/python3.10/ssl.py\", line 1104, in _create\n self.do_handshake()\n File \"/var/lang/lib/python3.10/ssl.py\", line 1375, in do_handshake\n self._sslobj.do_handshake()\nurllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/var/task/lgsf/aws_lambda/handlers.py\", line 32, in scraper_worker_handler\n scraper.run(run_log)\n File \"/var/task/lgsf/councillors/scrapers.py\", line 200, in run\n wards = self.get_councillors()\n File \"/var/task/lgsf/councillors/scrapers.py\", line 219, in get_councillors\n req = self.get(\n File \"/var/task/lgsf/scrapers/base.py\", line 47, in get\n response = self.requests_session.get(\n File \"/opt/python/requests/sessions.py\", line 602, in get\n return self.request(\"GET\", url, **kwargs)\n File \"/opt/python/requests/sessions.py\", line 589, in request\n resp = self.send(prep, **send_kwargs)\n File \"/opt/python/requests/sessions.py\", line 725, in send\n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 725, in \n history = [resp for resp in gen]\n File \"/opt/python/requests/sessions.py\", line 266, in resolve_redirects\n resp = self.send(\n File \"/opt/python/requests/sessions.py\", line 703, in send\n r = adapter.send(request, **kwargs)\n File \"/opt/python/requests/adapters.py\", line 501, in send\n raise ConnectionError(err, request=request)\nrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))\n","start":"2024-03-23 09:34:19.865434","end":"2024-03-23 09:34:22.271179","duration":2}}] diff --git a/index.html b/index.html index c6743231da..f420f9a982 100644 --- a/index.html +++ b/index.html @@ -49,10 +49,6 @@

All log runs

- -
-
-
@@ -129,6 +125,10 @@

All log runs

+ +
+
+
@@ -145,10 +145,6 @@

All log runs

- -
-
-
@@ -225,6 +221,10 @@

All log runs

+ +
+
+
@@ -241,10 +241,6 @@

All log runs

- -
-
-
@@ -321,6 +317,10 @@

All log runs

+ +
+
+
@@ -337,10 +337,6 @@

All log runs

- -
-
-
@@ -417,6 +413,10 @@

All log runs

+ +
+
+
@@ -433,10 +433,6 @@

All log runs

- -
-
-
@@ -513,6 +509,10 @@

All log runs

+ +
+
+
@@ -529,10 +529,6 @@

All log runs

- -
-
-
@@ -609,6 +605,10 @@

All log runs

+ +
+
+
@@ -625,10 +625,6 @@

All log runs

- -
-
-
@@ -705,6 +701,10 @@

All log runs

+ +
+
+
@@ -721,10 +721,6 @@

All log runs

- -
-
-
@@ -801,6 +797,10 @@

All log runs

+ +
+
+
@@ -817,10 +817,6 @@

All log runs

- -
-
-
@@ -897,6 +893,10 @@

All log runs

+ +
+
+
@@ -913,10 +913,6 @@

All log runs

- -
-
-
@@ -993,6 +989,10 @@

All log runs

+ +
+
+
@@ -1009,10 +1009,6 @@

All log runs

- -
-
-
@@ -1089,6 +1085,10 @@

All log runs

+ +
+
+
@@ -1105,10 +1105,6 @@

All log runs

- -
-
-
@@ -1185,6 +1181,10 @@

All log runs

+ +
+
+
@@ -1201,10 +1201,6 @@

All log runs

- -
-
-
@@ -1281,6 +1277,10 @@

All log runs

+ +
+
+
@@ -1297,10 +1297,6 @@

All log runs

- -
-
-
@@ -1377,6 +1373,10 @@

All log runs

+ +
+
+
@@ -1393,10 +1393,6 @@

All log runs

- -
-
-
@@ -1473,6 +1469,10 @@

All log runs

+ +
+
+
@@ -1489,10 +1489,6 @@

All log runs

- -
-
-
@@ -1569,6 +1565,10 @@

All log runs

+ +
+
+
@@ -1585,10 +1585,6 @@

All log runs

- -
-
-
@@ -1665,6 +1661,10 @@

All log runs

+ +
+
+
@@ -1681,10 +1681,6 @@

All log runs

- -
-
-
@@ -1761,6 +1757,10 @@

All log runs

+ +
+
+
@@ -1777,10 +1777,6 @@

All log runs

- -
-
-
@@ -1857,6 +1853,10 @@

All log runs

+ +
+
+
@@ -1873,10 +1873,6 @@

All log runs

- -
-
-
@@ -1953,6 +1949,10 @@

All log runs

+ +
+
+
@@ -1969,10 +1969,6 @@

All log runs

- -
-
-
@@ -2049,6 +2045,10 @@

All log runs

+ +
+
+
@@ -2065,10 +2065,6 @@

All log runs

- -
-
-
@@ -2145,6 +2141,10 @@

All log runs

+ +
+
+
@@ -2161,10 +2161,6 @@

All log runs

- -
-
-
@@ -2241,6 +2237,10 @@

All log runs

+ +
+
+
@@ -2257,10 +2257,6 @@

All log runs

- -
-
-
@@ -2337,6 +2333,10 @@

All log runs

+ +
+
+
@@ -2353,10 +2353,6 @@

All log runs

- -
-
-
@@ -2433,6 +2429,10 @@

All log runs

+ +
+
+
@@ -2449,10 +2449,6 @@

All log runs

- -
-
-
@@ -2529,6 +2525,10 @@

All log runs

+ +
+
+
@@ -2545,10 +2545,6 @@

All log runs

- -
-
-
@@ -2625,6 +2621,10 @@

All log runs

+ +
+
+
@@ -2641,10 +2641,6 @@

All log runs

- -
-
-
@@ -2721,6 +2717,10 @@

All log runs

+ +
+
+
@@ -2737,10 +2737,6 @@

All log runs

- -
-
-
@@ -2817,6 +2813,10 @@

All log runs

+ +
+
+
@@ -2833,10 +2833,6 @@

All log runs

- -
-
-
@@ -2913,6 +2909,10 @@

All log runs

+ +
+
+
@@ -2929,10 +2929,6 @@

All log runs

- -
-
-
@@ -3009,6 +3005,10 @@

All log runs

+ +
+
+
@@ -3025,10 +3025,6 @@

All log runs

- -
-
-
@@ -3105,6 +3101,10 @@

All log runs

+ +
+
+
@@ -3121,10 +3121,6 @@

All log runs

- -
-
-
@@ -3201,6 +3197,10 @@

All log runs

+ +
+
+
@@ -3217,10 +3217,6 @@

All log runs

- -
-
-
@@ -3297,6 +3293,10 @@

All log runs

+ +
+
+
@@ -3313,10 +3313,6 @@

All log runs

- -
-
-
@@ -3393,6 +3389,10 @@

All log runs

+ +
+
+
@@ -3409,10 +3409,6 @@

All log runs

- -
-
-
@@ -3489,6 +3485,10 @@

All log runs

+ +
+
+
@@ -3505,10 +3505,6 @@

All log runs

- -
-
-
@@ -3585,6 +3581,10 @@

All log runs

+ +
+
+
@@ -3601,10 +3601,6 @@

All log runs

- -
-
-
@@ -3681,6 +3677,10 @@

All log runs

+ +
+
+
@@ -3697,10 +3697,6 @@

All log runs

- -
-
-
@@ -3777,6 +3773,10 @@

All log runs

+ +
+
+
@@ -3793,10 +3793,6 @@

All log runs

- -
-
-
@@ -3873,26 +3869,26 @@

All log runs

+ +
+
+
- + BRT - ERROR + OK
- -
-
-
@@ -3969,6 +3965,10 @@

All log runs

+ +
+
+
@@ -3985,10 +3985,6 @@

All log runs

- -
-
-
@@ -4065,6 +4061,10 @@

All log runs

+ +
+
+
@@ -4081,10 +4081,6 @@

All log runs

- -
-
-
@@ -4161,6 +4157,10 @@

All log runs

+ +
+
+
@@ -4177,10 +4177,6 @@

All log runs

- -
-
-
@@ -4257,6 +4253,10 @@

All log runs

+ +
+
+
@@ -4273,10 +4273,6 @@

All log runs

- -
-
-
@@ -4353,6 +4349,10 @@

All log runs

+ +
+
+
@@ -4369,10 +4369,6 @@

All log runs

- -
-
-
@@ -4449,6 +4445,10 @@

All log runs

+ +
+
+
@@ -4465,10 +4465,6 @@

All log runs

- -
-
-
@@ -4545,6 +4541,10 @@

All log runs

+ +
+
+
@@ -4561,10 +4561,6 @@

All log runs

- -
-
-
@@ -4641,6 +4637,10 @@

All log runs

+ +
+
+
@@ -4657,10 +4657,6 @@

All log runs

- -
-
-
@@ -4737,6 +4733,10 @@

All log runs

+ +
+
+
@@ -4753,10 +4753,6 @@

All log runs

- -
-
-
@@ -4833,6 +4829,10 @@

All log runs

+ +
+
+
@@ -4849,10 +4849,6 @@

All log runs

- -
-
-
@@ -4929,6 +4925,10 @@

All log runs

+ +
+
+
@@ -4945,10 +4945,6 @@

All log runs

- -
-
-
@@ -5025,6 +5021,10 @@

All log runs

+ +
+
+
@@ -5041,10 +5041,6 @@

All log runs

- -
-
-
@@ -5121,6 +5117,10 @@

All log runs

+ +
+
+
@@ -5137,10 +5137,6 @@

All log runs

- -
-
-
@@ -5217,6 +5213,10 @@

All log runs

+ +
+
+
@@ -5233,10 +5233,6 @@

All log runs

- -
-
-
@@ -5313,6 +5309,10 @@

All log runs

+ +
+
+
@@ -5329,10 +5329,6 @@

All log runs

- -
-
-
@@ -5409,6 +5405,10 @@

All log runs

+ +
+
+
@@ -5425,10 +5425,6 @@

All log runs

- -
-
-
@@ -5505,6 +5501,10 @@

All log runs

+ +
+
+
@@ -5521,10 +5521,6 @@

All log runs

- -
-
-
@@ -5601,6 +5597,10 @@

All log runs

+ +
+
+
@@ -5617,10 +5617,6 @@

All log runs

- -
-
-
@@ -5697,6 +5693,10 @@

All log runs

+ +
+
+
@@ -5713,10 +5713,6 @@

All log runs

- -
-
-
@@ -5793,6 +5789,10 @@

All log runs

+ +
+
+
@@ -5809,10 +5809,6 @@

All log runs

- -
-
-
@@ -5889,6 +5885,10 @@

All log runs

+ +
+
+
@@ -5905,10 +5905,6 @@

All log runs

- -
-
-
@@ -5985,6 +5981,10 @@

All log runs

+ +
+
+
@@ -6001,10 +6001,6 @@

All log runs

- -
-
-
@@ -6081,6 +6077,10 @@

All log runs

+ +
+
+
@@ -6097,10 +6097,6 @@

All log runs

- -
-
-
@@ -6177,6 +6173,10 @@

All log runs

+ +
+
+
@@ -6193,10 +6193,6 @@

All log runs

- -
-
-
@@ -6273,6 +6269,10 @@

All log runs

+ +
+
+
@@ -6289,10 +6289,6 @@

All log runs

- -
-
-
@@ -6369,6 +6365,10 @@

All log runs

+ +
+
+
@@ -6385,10 +6385,6 @@

All log runs

- -
-
-
@@ -6465,6 +6461,10 @@

All log runs

+ +
+
+
@@ -6481,10 +6481,6 @@

All log runs

- -
-
-
@@ -6561,6 +6557,10 @@

All log runs

+ +
+
+
@@ -6577,10 +6577,6 @@

All log runs

- -
-
-
@@ -6657,6 +6653,10 @@

All log runs

+ +
+
+
@@ -6673,10 +6673,6 @@

All log runs

- -
-
-
@@ -6753,6 +6749,10 @@

All log runs

+ +
+
+
@@ -6769,10 +6769,6 @@

All log runs

- -
-
-
@@ -6849,6 +6845,10 @@

All log runs

+ +
+
+
@@ -6865,10 +6865,6 @@

All log runs

- -
-
-
@@ -6945,6 +6941,10 @@

All log runs

+ +
+
+
@@ -6961,10 +6961,6 @@

All log runs

- -
-
-
@@ -7041,6 +7037,10 @@

All log runs

+ +
+
+
@@ -7057,10 +7057,6 @@

All log runs

- -
-
-
@@ -7137,6 +7133,10 @@

All log runs

+ +
+
+
@@ -7153,10 +7153,6 @@

All log runs

- -
-
-
@@ -7233,6 +7229,10 @@

All log runs

+ +
+
+
@@ -7249,10 +7249,6 @@

All log runs

- -
-
-
@@ -7329,6 +7325,10 @@

All log runs

+ +
+
+
@@ -7345,10 +7345,6 @@

All log runs

- -
-
-
@@ -7425,6 +7421,10 @@

All log runs

+ +
+
+
@@ -7441,10 +7441,6 @@

All log runs

- -
-
-
@@ -7521,6 +7517,10 @@

All log runs

+ +
+
+
@@ -7537,10 +7537,6 @@

All log runs

- -
-
-
@@ -7617,6 +7613,10 @@

All log runs

+ +
+
+
@@ -7633,10 +7633,6 @@

All log runs

- -
-
-
@@ -7713,6 +7709,10 @@

All log runs

+ +
+
+
@@ -7729,10 +7729,6 @@

All log runs

- -
-
-
@@ -7809,6 +7805,10 @@

All log runs

+ +
+
+
@@ -7825,10 +7825,6 @@

All log runs

- -
-
-
@@ -7905,6 +7901,10 @@

All log runs

+ +
+
+
@@ -7921,10 +7921,6 @@

All log runs

- -
-
-
@@ -8001,6 +7997,10 @@

All log runs

+ +
+
+
@@ -8017,10 +8017,6 @@

All log runs

- -
-
-
@@ -8097,6 +8093,10 @@

All log runs

+ +
+
+
@@ -8113,10 +8113,6 @@

All log runs

- -
-
-
@@ -8193,6 +8189,10 @@

All log runs

+ +
+
+
@@ -8209,10 +8209,6 @@

All log runs

- -
-
-
@@ -8289,6 +8285,10 @@

All log runs

+ +
+
+
@@ -8305,10 +8305,6 @@

All log runs

- -
-
-
@@ -8385,6 +8381,10 @@

All log runs

+ +
+
+
@@ -8401,10 +8401,6 @@

All log runs

- -
-
-
@@ -8481,6 +8477,10 @@

All log runs

+ +
+
+
@@ -8497,10 +8497,6 @@

All log runs

- -
-
-
@@ -8577,6 +8573,10 @@

All log runs

+ +
+
+
@@ -8593,10 +8593,6 @@

All log runs

- -
-
-
@@ -8673,6 +8669,10 @@

All log runs

+ +
+
+
@@ -8689,10 +8689,6 @@

All log runs

- -
-
-
@@ -8769,6 +8765,10 @@

All log runs

+ +
+
+
@@ -8785,10 +8785,6 @@

All log runs

- -
-
-
@@ -8865,6 +8861,10 @@

All log runs

+ +
+
+
@@ -8881,10 +8881,6 @@

All log runs

- -
-
-
@@ -8961,6 +8957,10 @@

All log runs

+ +
+
+
@@ -8977,10 +8977,6 @@

All log runs

- -
-
-
@@ -9057,6 +9053,10 @@

All log runs

+ +
+
+
@@ -9073,10 +9073,6 @@

All log runs

- -
-
-
@@ -9153,6 +9149,10 @@

All log runs

+ +
+
+
@@ -9169,10 +9169,6 @@

All log runs

- -
-
-
@@ -9249,6 +9245,10 @@

All log runs

+ +
+
+
@@ -9265,10 +9265,6 @@

All log runs

- -
-
-
@@ -9345,6 +9341,10 @@

All log runs

+ +
+
+
@@ -9361,10 +9361,6 @@

All log runs

- -
-
-
@@ -9441,6 +9437,10 @@

All log runs

+ +
+
+
@@ -9457,10 +9457,6 @@

All log runs

- -
-
-
@@ -9537,6 +9533,10 @@

All log runs

+ +
+
+
@@ -9553,10 +9553,6 @@

All log runs

- -
-
-
@@ -9633,6 +9629,10 @@

All log runs

+ +
+
+
@@ -9649,10 +9649,6 @@

All log runs

- -
-
-
@@ -9729,6 +9725,10 @@

All log runs

+ +
+
+
@@ -9745,10 +9745,6 @@

All log runs

- -
-
-
@@ -9825,6 +9821,10 @@

All log runs

+ +
+
+
@@ -9841,10 +9841,6 @@

All log runs

- -
-
-
@@ -9921,6 +9917,10 @@

All log runs

+ +
+
+
@@ -9937,10 +9937,6 @@

All log runs

- -
-
-
@@ -10017,6 +10013,10 @@

All log runs

+ +
+
+
@@ -10033,10 +10033,6 @@

All log runs

- -
-
-
@@ -10113,6 +10109,10 @@

All log runs

+ +
+
+
@@ -10129,10 +10129,6 @@

All log runs

- -
-
-
@@ -10209,6 +10205,10 @@

All log runs

+ +
+
+
@@ -10225,10 +10225,6 @@

All log runs

- -
-
-
@@ -10305,6 +10301,10 @@

All log runs

+ +
+
+
@@ -10321,10 +10321,6 @@

All log runs

- -
-
-
@@ -10401,6 +10397,10 @@

All log runs

+ +
+
+
@@ -10417,10 +10417,6 @@

All log runs

- -
-
-
@@ -10497,6 +10493,10 @@

All log runs

+ +
+
+
@@ -10513,10 +10513,6 @@

All log runs

- -
-
-
@@ -10593,6 +10589,10 @@

All log runs

+ +
+
+
@@ -10609,10 +10609,6 @@

All log runs

- -
-
-
@@ -10689,6 +10685,10 @@

All log runs

+ +
+
+
@@ -10705,10 +10705,6 @@

All log runs

- -
-
-
@@ -10785,6 +10781,10 @@

All log runs

+ +
+
+
@@ -10801,10 +10801,6 @@

All log runs

- -
-
-
@@ -10881,6 +10877,10 @@

All log runs

+ +
+
+
@@ -10897,10 +10897,6 @@

All log runs

- -
-
-
@@ -10977,6 +10973,10 @@

All log runs

+ +
+
+
@@ -10993,83 +10993,83 @@

All log runs

- +
- -
+
+
- +
- +
- +
- +
- +
- +
- -
+
+
- -
+
+
- -
+
+
- +
- +
- +
- +
- +
- +
- +
- +
- +
@@ -11089,10 +11089,6 @@

All log runs

- -
-
-
@@ -11169,6 +11165,10 @@

All log runs

+ +
+
+
@@ -11185,10 +11185,6 @@

All log runs

- -
-
-
@@ -11265,6 +11261,10 @@

All log runs

+ +
+
+
@@ -11281,10 +11281,6 @@

All log runs

- -
-
-
@@ -11361,6 +11357,10 @@

All log runs

+ +
+
+
@@ -11377,10 +11377,6 @@

All log runs

- -
-
-
@@ -11457,6 +11453,10 @@

All log runs

+ +
+
+
@@ -11473,10 +11473,6 @@

All log runs

- -
-
-
@@ -11553,6 +11549,10 @@

All log runs

+ +
+
+
@@ -11569,10 +11569,6 @@

All log runs

- -
-
-
@@ -11649,6 +11645,10 @@

All log runs

+ +
+
+
@@ -11665,10 +11665,6 @@

All log runs

- -
-
-
@@ -11745,6 +11741,10 @@

All log runs

+ +
+
+
@@ -11761,10 +11761,6 @@

All log runs

- -
-
-
@@ -11841,6 +11837,10 @@

All log runs

+ +
+
+
@@ -11857,10 +11857,6 @@

All log runs

- -
-
-
@@ -11937,6 +11933,10 @@

All log runs

+ +
+
+
@@ -11953,10 +11953,6 @@

All log runs

- -
-
-
@@ -12033,6 +12029,10 @@

All log runs

+ +
+
+
@@ -12049,10 +12049,6 @@

All log runs

- -
-
-
@@ -12129,6 +12125,10 @@

All log runs

+ +
+
+
@@ -12145,10 +12145,6 @@

All log runs

- -
-
-
@@ -12225,6 +12221,10 @@

All log runs

+ +
+
+
@@ -12241,10 +12241,6 @@

All log runs

- -
-
-
@@ -12321,6 +12317,10 @@

All log runs

+ +
+
+
@@ -12337,10 +12337,6 @@

All log runs

- -
-
-
@@ -12417,6 +12413,10 @@

All log runs

+ +
+
+
@@ -12433,10 +12433,6 @@

All log runs

- -
-
-
@@ -12513,6 +12509,10 @@

All log runs

+ +
+
+
@@ -12529,10 +12529,6 @@

All log runs

- -
-
-
@@ -12609,6 +12605,10 @@

All log runs

+ +
+
+
@@ -12625,10 +12625,6 @@

All log runs

- -
-
-
@@ -12705,6 +12701,10 @@

All log runs

+ +
+
+
@@ -12721,10 +12721,6 @@

All log runs

- -
-
-
@@ -12801,6 +12797,10 @@

All log runs

+ +
+
+
@@ -12817,10 +12817,6 @@

All log runs

- -
-
-
@@ -12897,6 +12893,10 @@

All log runs

+ +
+
+
@@ -12913,10 +12913,6 @@

All log runs

- -
-
-
@@ -12993,6 +12989,10 @@

All log runs

+ +
+
+
@@ -13009,10 +13009,6 @@

All log runs

- -
-
-
@@ -13089,6 +13085,10 @@

All log runs

+ +
+
+
@@ -13105,10 +13105,6 @@

All log runs

- -
-
-
@@ -13185,6 +13181,10 @@

All log runs

+ +
+
+
@@ -13201,10 +13201,6 @@

All log runs

- -
-
-
@@ -13281,6 +13277,10 @@

All log runs

+ +
+
+
@@ -13297,10 +13297,6 @@

All log runs

- -
-
-
@@ -13377,6 +13373,10 @@

All log runs

+ +
+
+
@@ -13393,10 +13393,6 @@

All log runs

- -
-
-
@@ -13473,6 +13469,10 @@

All log runs

+ +
+
+
@@ -13489,10 +13489,6 @@

All log runs

- -
-
-
@@ -13569,6 +13565,10 @@

All log runs

+ +
+
+
@@ -13585,10 +13585,6 @@

All log runs

- -
-
-
@@ -13665,6 +13661,10 @@

All log runs

+ +
+
+
@@ -13681,10 +13681,6 @@

All log runs

- -
-
-
@@ -13761,6 +13757,10 @@

All log runs

+ +
+
+
@@ -13777,10 +13777,6 @@

All log runs

- -
-
-
@@ -13857,6 +13853,10 @@

All log runs

+ +
+
+
@@ -13873,10 +13873,6 @@

All log runs

- -
-
-
@@ -13953,6 +13949,10 @@

All log runs

+ +
+
+
@@ -13969,10 +13969,6 @@

All log runs

- -
-
-
@@ -14049,6 +14045,10 @@

All log runs

+ +
+
+
@@ -14065,10 +14065,6 @@

All log runs

- -
-
-
@@ -14145,6 +14141,10 @@

All log runs

+ +
+
+
@@ -14161,10 +14161,6 @@

All log runs

- -
-
-
@@ -14241,6 +14237,10 @@

All log runs

+ +
+
+
@@ -14257,10 +14257,6 @@

All log runs

- -
-
-
@@ -14337,6 +14333,10 @@

All log runs

+ +
+
+
@@ -14353,10 +14353,6 @@

All log runs

- -
-
-
@@ -14433,6 +14429,10 @@

All log runs

+ +
+
+
@@ -14449,10 +14449,6 @@

All log runs

- -
-
-
@@ -14529,6 +14525,10 @@

All log runs

+ +
+
+
@@ -14545,10 +14545,6 @@

All log runs

- -
-
-
@@ -14625,6 +14621,10 @@

All log runs

+ +
+
+
@@ -14641,10 +14641,6 @@

All log runs

- -
-
-
@@ -14721,6 +14717,10 @@

All log runs

+ +
+
+
@@ -14737,10 +14737,6 @@

All log runs

- -
-
-
@@ -14817,6 +14813,10 @@

All log runs

+ +
+
+
@@ -14833,10 +14833,6 @@

All log runs

- -
-
-
@@ -14913,6 +14909,10 @@

All log runs

+ +
+
+
@@ -14929,10 +14929,6 @@

All log runs

- -
-
-
@@ -15009,6 +15005,10 @@

All log runs

+ +
+
+
@@ -15025,10 +15025,6 @@

All log runs

- -
-
-
@@ -15105,6 +15101,10 @@

All log runs

+ +
+
+
@@ -15121,10 +15121,6 @@

All log runs

- -
-
-
@@ -15201,6 +15197,10 @@

All log runs

+ +
+
+
@@ -15217,10 +15217,6 @@

All log runs

- -
-
-
@@ -15297,6 +15293,10 @@

All log runs

+ +
+
+
@@ -15313,10 +15313,6 @@

All log runs

- -
-
-
@@ -15393,6 +15389,10 @@

All log runs

+ +
+
+
@@ -15409,10 +15409,6 @@

All log runs

- -
-
-
@@ -15489,6 +15485,10 @@

All log runs

+ +
+
+
@@ -15505,10 +15505,6 @@

All log runs

- -
-
-
@@ -15585,6 +15581,10 @@

All log runs

+ +
+
+
@@ -15601,10 +15601,6 @@

All log runs

- -
-
-
@@ -15681,6 +15677,10 @@

All log runs

+ +
+
+
@@ -15697,10 +15697,6 @@

All log runs

- -
-
-
@@ -15777,6 +15773,10 @@

All log runs

+ +
+
+
@@ -15793,10 +15793,6 @@

All log runs

- -
-
-
@@ -15873,6 +15869,10 @@

All log runs

+ +
+
+
@@ -15889,10 +15889,6 @@

All log runs

- -
-
-
@@ -15969,6 +15965,10 @@

All log runs

+ +
+
+
@@ -15985,10 +15985,6 @@

All log runs

- -
-
-
@@ -16065,26 +16061,26 @@

All log runs

+ +
+
+
- + LCE - ERROR + OK
- -
-
-
@@ -16161,6 +16157,10 @@

All log runs

+ +
+
+
@@ -16177,10 +16177,6 @@

All log runs

- -
-
-
@@ -16257,6 +16253,10 @@

All log runs

+ +
+
+
@@ -16273,10 +16273,6 @@

All log runs

- -
-
-
@@ -16353,6 +16349,10 @@

All log runs

+ +
+
+
@@ -16369,10 +16369,6 @@

All log runs

- -
-
-
@@ -16449,6 +16445,10 @@

All log runs

+ +
+
+
@@ -16465,10 +16465,6 @@

All log runs

- -
-
-
@@ -16545,6 +16541,10 @@

All log runs

+ +
+
+
@@ -16561,10 +16561,6 @@

All log runs

- -
-
-
@@ -16641,6 +16637,10 @@

All log runs

+ +
+
+
@@ -16657,10 +16657,6 @@

All log runs

- -
-
-
@@ -16737,6 +16733,10 @@

All log runs

+ +
+
+
@@ -16753,10 +16753,6 @@

All log runs

- -
-
-
@@ -16833,6 +16829,10 @@

All log runs

+ +
+
+
@@ -16849,10 +16849,6 @@

All log runs

- -
-
-
@@ -16929,6 +16925,10 @@

All log runs

+ +
+
+
@@ -16945,10 +16945,6 @@

All log runs

- -
-
-
@@ -17025,6 +17021,10 @@

All log runs

+ +
+
+
@@ -17041,10 +17041,6 @@

All log runs

- -
-
-
@@ -17121,6 +17117,10 @@

All log runs

+ +
+
+
@@ -17137,10 +17137,6 @@

All log runs

- -
-
-
@@ -17217,6 +17213,10 @@

All log runs

+ +
+
+
@@ -17233,10 +17233,6 @@

All log runs

- -
-
-
@@ -17313,6 +17309,10 @@

All log runs

+ +
+
+
@@ -17329,10 +17329,6 @@

All log runs

- -
-
-
@@ -17409,6 +17405,10 @@

All log runs

+ +
+
+
@@ -17425,10 +17425,6 @@

All log runs

- -
-
-
@@ -17505,6 +17501,10 @@

All log runs

+ +
+
+
@@ -17521,10 +17521,6 @@

All log runs

- -
-
-
@@ -17601,6 +17597,10 @@

All log runs

+ +
+
+
@@ -17617,10 +17617,6 @@

All log runs

- -
-
-
@@ -17697,6 +17693,10 @@

All log runs

+ +
+
+
@@ -17713,10 +17713,6 @@

All log runs

- -
-
-
@@ -17793,6 +17789,10 @@

All log runs

+ +
+
+
@@ -17809,10 +17809,6 @@

All log runs

- -
-
-
@@ -17889,6 +17885,10 @@

All log runs

+ +
+
+
@@ -17905,10 +17905,6 @@

All log runs

- -
-
-
@@ -17985,6 +17981,10 @@

All log runs

+ +
+
+
@@ -18001,10 +18001,6 @@

All log runs

- -
-
-
@@ -18081,6 +18077,10 @@

All log runs

+ +
+
+
@@ -18097,10 +18097,6 @@

All log runs

- -
-
-
@@ -18177,6 +18173,10 @@

All log runs

+ +
+
+
@@ -18193,10 +18193,6 @@

All log runs

- -
-
-
@@ -18273,6 +18269,10 @@

All log runs

+ +
+
+
@@ -18289,10 +18289,6 @@

All log runs

- -
-
-
@@ -18369,6 +18365,10 @@

All log runs

+ +
+
+
@@ -18385,10 +18385,6 @@

All log runs

- -
-
-
@@ -18465,6 +18461,10 @@

All log runs

+ +
+
+
@@ -18481,10 +18481,6 @@

All log runs

- -
-
-
@@ -18561,6 +18557,10 @@

All log runs

+ +
+
+
@@ -18577,10 +18577,6 @@

All log runs

- -
-
-
@@ -18657,6 +18653,10 @@

All log runs

+ +
+
+
@@ -18673,10 +18673,6 @@

All log runs

- -
-
-
@@ -18753,6 +18749,10 @@

All log runs

+ +
+
+
@@ -18769,10 +18769,6 @@

All log runs

- -
-
-
@@ -18849,6 +18845,10 @@

All log runs

+ +
+
+
@@ -18865,10 +18865,6 @@

All log runs

- -
-
-
@@ -18945,6 +18941,10 @@

All log runs

+ +
+
+
@@ -18961,10 +18961,6 @@

All log runs

- -
-
-
@@ -19041,6 +19037,10 @@

All log runs

+ +
+
+
@@ -19057,10 +19057,6 @@

All log runs

- -
-
-
@@ -19137,6 +19133,10 @@

All log runs

+ +
+
+
@@ -19153,10 +19153,6 @@

All log runs

- -
-
-
@@ -19233,6 +19229,10 @@

All log runs

+ +
+
+
@@ -19249,10 +19249,6 @@

All log runs

- -
-
-
@@ -19329,6 +19325,10 @@

All log runs

+ +
+
+
@@ -19345,10 +19345,6 @@

All log runs

- -
-
-
@@ -19425,6 +19421,10 @@

All log runs

+ +
+
+
@@ -19441,10 +19441,6 @@

All log runs

- -
-
-
@@ -19521,6 +19517,10 @@

All log runs

+ +
+
+
@@ -19537,10 +19537,6 @@

All log runs

- -
-
-
@@ -19617,6 +19613,10 @@

All log runs

+ +
+
+
@@ -19633,10 +19633,6 @@

All log runs

- -
-
-
@@ -19713,6 +19709,10 @@

All log runs

+ +
+
+
@@ -19729,10 +19729,6 @@

All log runs

- -
-
-
@@ -19809,26 +19805,26 @@

All log runs

+ +
+
+
- + NHE - OK + ERROR
- -
-
-
@@ -19905,6 +19901,10 @@

All log runs

+ +
+
+
@@ -19921,10 +19921,6 @@

All log runs

- -
-
-
@@ -20001,6 +19997,10 @@

All log runs

+ +
+
+
@@ -20017,10 +20017,6 @@

All log runs

- -
-
-
@@ -20097,6 +20093,10 @@

All log runs

+ +
+
+
@@ -20113,10 +20113,6 @@

All log runs

- -
-
-
@@ -20193,6 +20189,10 @@

All log runs

+ +
+
+
@@ -20209,10 +20209,6 @@

All log runs

- -
-
-
@@ -20289,6 +20285,10 @@

All log runs

+ +
+
+
@@ -20305,10 +20305,6 @@

All log runs

- -
-
-
@@ -20385,6 +20381,10 @@

All log runs

+ +
+
+
@@ -20401,10 +20401,6 @@

All log runs

- -
-
-
@@ -20481,6 +20477,10 @@

All log runs

+ +
+
+
@@ -20497,10 +20497,6 @@

All log runs

- -
-
-
@@ -20577,6 +20573,10 @@

All log runs

+ +
+
+
@@ -20593,10 +20593,6 @@

All log runs

- -
-
-
@@ -20673,6 +20669,10 @@

All log runs

+ +
+
+
@@ -20689,10 +20689,6 @@

All log runs

- -
-
-
@@ -20769,6 +20765,10 @@

All log runs

+ +
+
+
@@ -20785,10 +20785,6 @@

All log runs

- -
-
-
@@ -20865,6 +20861,10 @@

All log runs

+ +
+
+
@@ -20881,10 +20881,6 @@

All log runs

- -
-
-
@@ -20961,6 +20957,10 @@

All log runs

+ +
+
+
@@ -20977,10 +20977,6 @@

All log runs

- -
-
-
@@ -21057,6 +21053,10 @@

All log runs

+ +
+
+
@@ -21073,10 +21073,6 @@

All log runs

- -
-
-
@@ -21153,6 +21149,10 @@

All log runs

+ +
+
+
@@ -21169,10 +21169,6 @@

All log runs

- -
-
-
@@ -21249,6 +21245,10 @@

All log runs

+ +
+
+
@@ -21265,10 +21265,6 @@

All log runs

- -
-
-
@@ -21345,6 +21341,10 @@

All log runs

+ +
+
+
@@ -21361,10 +21361,6 @@

All log runs

- -
-
-
@@ -21441,6 +21437,10 @@

All log runs

+ +
+
+
@@ -21457,10 +21457,6 @@

All log runs

- -
-
-
@@ -21537,6 +21533,10 @@

All log runs

+ +
+
+
@@ -21553,10 +21553,6 @@

All log runs

- -
-
-
@@ -21633,6 +21629,10 @@

All log runs

+ +
+
+
@@ -21649,10 +21649,6 @@

All log runs

- -
-
-
@@ -21729,6 +21725,10 @@

All log runs

+ +
+
+
@@ -21745,10 +21745,6 @@

All log runs

- -
-
-
@@ -21825,6 +21821,10 @@

All log runs

+ +
+
+
@@ -21841,10 +21841,6 @@

All log runs

- -
-
-
@@ -21921,6 +21917,10 @@

All log runs

+ +
+
+
@@ -21937,10 +21937,6 @@

All log runs

- -
-
-
@@ -22017,6 +22013,10 @@

All log runs

+ +
+
+
@@ -22033,10 +22033,6 @@

All log runs

- -
-
-
@@ -22113,6 +22109,10 @@

All log runs

+ +
+
+
@@ -22129,10 +22129,6 @@

All log runs

- -
-
-
@@ -22209,6 +22205,10 @@

All log runs

+ +
+
+
@@ -22225,10 +22225,6 @@

All log runs

- -
-
-
@@ -22305,6 +22301,10 @@

All log runs

+ +
+
+
@@ -22321,10 +22321,6 @@

All log runs

- -
-
-
@@ -22401,6 +22397,10 @@

All log runs

+ +
+
+
@@ -22417,10 +22417,6 @@

All log runs

- -
-
-
@@ -22497,6 +22493,10 @@

All log runs

+ +
+
+
@@ -22513,10 +22513,6 @@

All log runs

- -
-
-
@@ -22593,6 +22589,10 @@

All log runs

+ +
+
+
@@ -22609,10 +22609,6 @@

All log runs

- -
-
-
@@ -22689,6 +22685,10 @@

All log runs

+ +
+
+
@@ -22705,10 +22705,6 @@

All log runs

- -
-
-
@@ -22785,6 +22781,10 @@

All log runs

+ +
+
+
@@ -22801,10 +22801,6 @@

All log runs

- -
-
-
@@ -22881,6 +22877,10 @@

All log runs

+ +
+
+
@@ -22897,10 +22897,6 @@

All log runs

- -
-
-
@@ -22977,6 +22973,10 @@

All log runs

+ +
+
+
@@ -22993,10 +22993,6 @@

All log runs

- -
-
-
@@ -23073,6 +23069,10 @@

All log runs

+ +
+
+
@@ -23089,10 +23089,6 @@

All log runs

- -
-
-
@@ -23169,6 +23165,10 @@

All log runs

+ +
+
+
@@ -23185,10 +23185,6 @@

All log runs

- -
-
-
@@ -23265,6 +23261,10 @@

All log runs

+ +
+
+
@@ -23281,10 +23281,6 @@

All log runs

- -
-
-
@@ -23361,6 +23357,10 @@

All log runs

+ +
+
+
@@ -23377,10 +23377,6 @@

All log runs

- -
-
-
@@ -23457,6 +23453,10 @@

All log runs

+ +
+
+
@@ -23473,10 +23473,6 @@

All log runs

- -
-
-
@@ -23553,6 +23549,10 @@

All log runs

+ +
+
+
@@ -23569,10 +23569,6 @@

All log runs

- -
-
-
@@ -23649,6 +23645,10 @@

All log runs

+ +
+
+
@@ -23665,10 +23665,6 @@

All log runs

- -
-
-
@@ -23745,6 +23741,10 @@

All log runs

+ +
+
+
@@ -23761,10 +23761,6 @@

All log runs

- -
-
-
@@ -23841,6 +23837,10 @@

All log runs

+ +
+
+
@@ -23857,10 +23857,6 @@

All log runs

- -
-
-
@@ -23937,6 +23933,10 @@

All log runs

+ +
+
+
@@ -23953,10 +23953,6 @@

All log runs

- -
-
-
@@ -24033,6 +24029,10 @@

All log runs

+ +
+
+
@@ -24049,10 +24049,6 @@

All log runs

- -
-
-
@@ -24129,6 +24125,10 @@

All log runs

+ +
+
+
@@ -24145,10 +24145,6 @@

All log runs

- -
-
-
@@ -24225,6 +24221,10 @@

All log runs

+ +
+
+
@@ -24241,10 +24241,6 @@

All log runs

- -
-
-
@@ -24321,6 +24317,10 @@

All log runs

+ +
+
+
@@ -24337,10 +24337,6 @@

All log runs

- -
-
-
@@ -24417,6 +24413,10 @@

All log runs

+ +
+
+
@@ -24433,10 +24433,6 @@

All log runs

- -
-
-
@@ -24513,6 +24509,10 @@

All log runs

+ +
+
+
@@ -24529,10 +24529,6 @@

All log runs

- -
-
-
@@ -24609,6 +24605,10 @@

All log runs

+ +
+
+
@@ -24625,10 +24625,6 @@

All log runs

- -
-
-
@@ -24705,6 +24701,10 @@

All log runs

+ +
+
+
@@ -24721,83 +24721,83 @@

All log runs

- +
- -
+
+
- +
- +
- -
+
+
- +
- +
- -
+
+
- -
+
+
- +
- +
- +
- -
+
+
- -
+
+
- +
- +
- -
+
+
- +
- -
+
+
- +
@@ -24817,10 +24817,6 @@

All log runs

- -
-
-
@@ -24897,6 +24893,10 @@

All log runs

+ +
+
+
@@ -24913,10 +24913,6 @@

All log runs

- -
-
-
@@ -24993,6 +24989,10 @@

All log runs

+ +
+
+
@@ -25009,10 +25009,6 @@

All log runs

- -
-
-
@@ -25089,6 +25085,10 @@

All log runs

+ +
+
+
@@ -25201,10 +25201,6 @@

All log runs

- -
-
-
@@ -25281,6 +25277,10 @@

All log runs

+ +
+
+
@@ -25297,10 +25297,6 @@

All log runs

- -
-
-
@@ -25377,6 +25373,10 @@

All log runs

+ +
+
+
@@ -25393,10 +25393,6 @@

All log runs

- -
-
-
@@ -25473,6 +25469,10 @@

All log runs

+ +
+
+
@@ -25489,10 +25489,6 @@

All log runs

- -
-
-
@@ -25569,6 +25565,10 @@

All log runs

+ +
+
+
@@ -25585,10 +25585,6 @@

All log runs

- -
-
-
@@ -25665,6 +25661,10 @@

All log runs

+ +
+
+
@@ -25681,10 +25681,6 @@

All log runs

- -
-
-
@@ -25761,6 +25757,10 @@

All log runs

+ +
+
+
@@ -25777,10 +25777,6 @@

All log runs

- -
-
-
@@ -25857,6 +25853,10 @@

All log runs

+ +
+
+
@@ -25873,10 +25873,6 @@

All log runs

- -
-
-
@@ -25953,6 +25949,10 @@

All log runs

+ +
+
+
@@ -25969,10 +25969,6 @@

All log runs

- -
-
-
@@ -26049,6 +26045,10 @@

All log runs

+ +
+
+
@@ -26065,10 +26065,6 @@

All log runs

- -
-
-
@@ -26145,6 +26141,10 @@

All log runs

+ +
+
+
@@ -26161,10 +26161,6 @@

All log runs

- -
-
-
@@ -26241,6 +26237,10 @@

All log runs

+ +
+
+
@@ -26257,10 +26257,6 @@

All log runs

- -
-
-
@@ -26337,6 +26333,10 @@

All log runs

+ +
+
+
@@ -26353,10 +26353,6 @@

All log runs

- -
-
-
@@ -26433,6 +26429,10 @@

All log runs

+ +
+
+
@@ -26449,10 +26449,6 @@

All log runs

- -
-
-
@@ -26529,6 +26525,10 @@

All log runs

+ +
+
+
@@ -26545,10 +26545,6 @@

All log runs

- -
-
-
@@ -26625,6 +26621,10 @@

All log runs

+ +
+
+
@@ -26641,10 +26641,6 @@

All log runs

- -
-
-
@@ -26721,6 +26717,10 @@

All log runs

+ +
+
+
@@ -26737,10 +26737,6 @@

All log runs

- -
-
-
@@ -26817,6 +26813,10 @@

All log runs

+ +
+
+
@@ -26833,10 +26833,6 @@

All log runs

- -
-
-
@@ -26913,6 +26909,10 @@

All log runs

+ +
+
+
@@ -26929,10 +26929,6 @@

All log runs

- -
-
-
@@ -27009,6 +27005,10 @@

All log runs

+ +
+
+
@@ -27025,10 +27025,6 @@

All log runs

- -
-
-
@@ -27105,6 +27101,10 @@

All log runs

+ +
+
+
@@ -27121,10 +27121,6 @@

All log runs

- -
-
-
@@ -27201,6 +27197,10 @@

All log runs

+ +
+
+
@@ -27217,10 +27217,6 @@

All log runs

- -
-
-
@@ -27297,6 +27293,10 @@

All log runs

+ +
+
+
@@ -27313,10 +27313,6 @@

All log runs

- -
-
-
@@ -27393,6 +27389,10 @@

All log runs

+ +
+
+
@@ -27409,10 +27409,6 @@

All log runs

- -
-
-
@@ -27489,6 +27485,10 @@

All log runs

+ +
+
+
@@ -27505,10 +27505,6 @@

All log runs

- -
-
-
@@ -27585,6 +27581,10 @@

All log runs

+ +
+
+
@@ -27601,10 +27601,6 @@

All log runs

- -
-
-
@@ -27681,6 +27677,10 @@

All log runs

+ +
+
+
@@ -27697,10 +27697,6 @@

All log runs

- -
-
-
@@ -27777,6 +27773,10 @@

All log runs

+ +
+
+
@@ -27793,10 +27793,6 @@

All log runs

- -
-
-
@@ -27873,6 +27869,10 @@

All log runs

+ +
+
+
@@ -27889,10 +27889,6 @@

All log runs

- -
-
-
@@ -27969,6 +27965,10 @@

All log runs

+ +
+
+
@@ -27985,10 +27985,6 @@

All log runs

- -
-
-
@@ -28065,6 +28061,10 @@

All log runs

+ +
+
+
@@ -28081,10 +28081,6 @@

All log runs

- -
-
-
@@ -28161,6 +28157,10 @@

All log runs

+ +
+
+
@@ -28177,10 +28177,6 @@

All log runs

- -
-
-
@@ -28257,6 +28253,10 @@

All log runs

+ +
+
+
@@ -28273,10 +28273,6 @@

All log runs

- -
-
-
@@ -28353,6 +28349,10 @@

All log runs

+ +
+
+
@@ -28369,10 +28369,6 @@

All log runs

- -
-
-
@@ -28449,6 +28445,10 @@

All log runs

+ +
+
+
@@ -28465,10 +28465,6 @@

All log runs

- -
-
-
@@ -28545,6 +28541,10 @@

All log runs

+ +
+
+
@@ -28561,10 +28561,6 @@

All log runs

- -
-
-
@@ -28641,6 +28637,10 @@

All log runs

+ +
+
+
@@ -28657,10 +28657,6 @@

All log runs

- -
-
-
@@ -28737,6 +28733,10 @@

All log runs

+ +
+
+
@@ -28753,10 +28753,6 @@

All log runs

- -
-
-
@@ -28833,6 +28829,10 @@

All log runs

+ +
+
+
@@ -28849,10 +28849,6 @@

All log runs

- -
-
-
@@ -28929,6 +28925,10 @@

All log runs

+ +
+
+
@@ -28945,10 +28945,6 @@

All log runs

- -
-
-
@@ -29025,6 +29021,10 @@

All log runs

+ +
+
+
@@ -29041,10 +29041,6 @@

All log runs

- -
-
-
@@ -29121,6 +29117,10 @@

All log runs

+ +
+
+
@@ -29137,10 +29137,6 @@

All log runs

- -
-
-
@@ -29217,6 +29213,10 @@

All log runs

+ +
+
+
@@ -29233,10 +29233,6 @@

All log runs

- -
-
-
@@ -29313,6 +29309,10 @@

All log runs

+ +
+
+
@@ -29329,10 +29329,6 @@

All log runs

- -
-
-
@@ -29409,6 +29405,10 @@

All log runs

+ +
+
+
@@ -29425,10 +29425,6 @@

All log runs

- -
-
-
@@ -29505,6 +29501,10 @@

All log runs

+ +
+
+
@@ -29521,10 +29521,6 @@

All log runs

- -
-
-
@@ -29601,6 +29597,10 @@

All log runs

+ +
+
+
@@ -29617,10 +29617,6 @@

All log runs

- -
-
-
@@ -29697,6 +29693,10 @@

All log runs

+ +
+
+
@@ -29713,10 +29713,6 @@

All log runs

- -
-
-
@@ -29793,26 +29789,26 @@

All log runs

+ +
+
+
- + TUN - ERROR + OK
- -
-
-
@@ -29889,6 +29885,10 @@

All log runs

+ +
+
+
@@ -29905,10 +29905,6 @@

All log runs

- -
-
-
@@ -29985,6 +29981,10 @@

All log runs

+ +
+
+
@@ -30001,10 +30001,6 @@

All log runs

- -
-
-
@@ -30081,6 +30077,10 @@

All log runs

+ +
+
+
@@ -30097,10 +30097,6 @@

All log runs

- -
-
-
@@ -30177,6 +30173,10 @@

All log runs

+ +
+
+
@@ -30193,10 +30193,6 @@

All log runs

- -
-
-
@@ -30273,6 +30269,10 @@

All log runs

+ +
+
+
@@ -30289,10 +30289,6 @@

All log runs

- -
-
-
@@ -30369,6 +30365,10 @@

All log runs

+ +
+
+
@@ -30385,10 +30385,6 @@

All log runs

- -
-
-
@@ -30465,6 +30461,10 @@

All log runs

+ +
+
+
@@ -30481,10 +30481,6 @@

All log runs

- -
-
-
@@ -30561,6 +30557,10 @@

All log runs

+ +
+
+
@@ -30577,10 +30577,6 @@

All log runs

- -
-
-
@@ -30657,6 +30653,10 @@

All log runs

+ +
+
+
@@ -30673,10 +30673,6 @@

All log runs

- -
-
-
@@ -30753,6 +30749,10 @@

All log runs

+ +
+
+
@@ -30769,10 +30769,6 @@

All log runs

- -
-
-
@@ -30849,6 +30845,10 @@

All log runs

+ +
+
+
@@ -30865,10 +30865,6 @@

All log runs

- -
-
-
@@ -30945,6 +30941,10 @@

All log runs

+ +
+
+
@@ -30961,10 +30961,6 @@

All log runs

- -
-
-
@@ -31041,6 +31037,10 @@

All log runs

+ +
+
+
@@ -31057,10 +31057,6 @@

All log runs

- -
-
-
@@ -31137,6 +31133,10 @@

All log runs

+ +
+
+
@@ -31153,10 +31153,6 @@

All log runs

- -
-
-
@@ -31233,6 +31229,10 @@

All log runs

+ +
+
+
@@ -31249,10 +31249,6 @@

All log runs

- -
-
-
@@ -31329,6 +31325,10 @@

All log runs

+ +
+
+
@@ -31345,10 +31345,6 @@

All log runs

- -
-
-
@@ -31425,6 +31421,10 @@

All log runs

+ +
+
+
@@ -31441,10 +31441,6 @@

All log runs

- -
-
-
@@ -31521,6 +31517,10 @@

All log runs

+ +
+
+
@@ -31537,10 +31537,6 @@

All log runs

- -
-
-
@@ -31617,6 +31613,10 @@

All log runs

+ +
+
+
@@ -31633,10 +31633,6 @@

All log runs

- -
-
-
@@ -31713,6 +31709,10 @@

All log runs

+ +
+
+
@@ -31729,10 +31729,6 @@

All log runs

- -
-
-
@@ -31809,6 +31805,10 @@

All log runs

+ +
+
+
@@ -31825,10 +31825,6 @@

All log runs

- -
-
-
@@ -31905,6 +31901,10 @@

All log runs

+ +
+
+
@@ -31921,10 +31921,6 @@

All log runs

- -
-
-
@@ -32001,6 +31997,10 @@

All log runs

+ +
+
+
@@ -32017,10 +32017,6 @@

All log runs

- -
-
-
@@ -32097,6 +32093,10 @@

All log runs

+ +
+
+
@@ -32113,10 +32113,6 @@

All log runs

- -
-
-
@@ -32193,6 +32189,10 @@

All log runs

+ +
+
+
@@ -32209,10 +32209,6 @@

All log runs

- -
-
-
@@ -32289,6 +32285,10 @@

All log runs

+ +
+
+
@@ -32305,10 +32305,6 @@

All log runs

- -
-
-
@@ -32385,6 +32381,10 @@

All log runs

+ +
+
+
@@ -32401,10 +32401,6 @@

All log runs

- -
-
-
@@ -32481,6 +32477,10 @@

All log runs

+ +
+
+
@@ -32497,10 +32497,6 @@

All log runs

- -
-
-
@@ -32577,6 +32573,10 @@

All log runs

+ +
+
+
@@ -32593,10 +32593,6 @@

All log runs

- -
-
-
@@ -32673,6 +32669,10 @@

All log runs

+ +
+
+
@@ -32689,10 +32689,6 @@

All log runs

- -
-
-
@@ -32769,6 +32765,10 @@

All log runs

+ +
+
+
@@ -32785,10 +32785,6 @@

All log runs

- -
-
-
@@ -32865,6 +32861,10 @@

All log runs

+ +
+
+
@@ -32881,10 +32881,6 @@

All log runs

- -
-
-
@@ -32961,6 +32957,10 @@

All log runs

+ +
+
+
@@ -32977,10 +32977,6 @@

All log runs

- -
-
-
@@ -33057,6 +33053,10 @@

All log runs

+ +
+
+
@@ -33073,10 +33073,6 @@

All log runs

- -
-
-
@@ -33153,6 +33149,10 @@

All log runs

+ +
+
+
@@ -33169,10 +33169,6 @@

All log runs

- -
-
-
@@ -33249,6 +33245,10 @@

All log runs

+ +
+
+
@@ -33265,10 +33265,6 @@

All log runs

- -
-
-
@@ -33345,6 +33341,10 @@

All log runs

+ +
+
+
@@ -33361,10 +33361,6 @@

All log runs

- -
-
-
@@ -33441,6 +33437,10 @@

All log runs

+ +
+
+
@@ -33457,10 +33457,6 @@

All log runs

- -
-
-
@@ -33537,6 +33533,10 @@

All log runs

+ +
+
+
@@ -33553,10 +33553,6 @@

All log runs

- -
-
-
@@ -33633,6 +33629,10 @@

All log runs

+ +
+
+
@@ -33649,10 +33649,6 @@

All log runs

- -
-
-
@@ -33729,6 +33725,10 @@

All log runs

+ +
+
+
@@ -33745,10 +33745,6 @@

All log runs

- -
-
-
@@ -33825,6 +33821,10 @@

All log runs

+ +
+
+
@@ -33841,84 +33841,84 @@

All log runs

@@ -33937,10 +33937,6 @@

All log runs

- -
-
-
@@ -34017,6 +34013,10 @@

All log runs

+ +
+
+
diff --git a/logbooks/ABC/index.html b/logbooks/ABC/index.html index a87a1792a5..a25e6ea334 100644 --- a/logbooks/ABC/index.html +++ b/logbooks/ABC/index.html @@ -37,6 +37,56 @@ +

2024-03-23

+
+
+
+
+
Duration
+
6 seconds
+
+
+
Start
+
2024-03-23 09:11:33.978168
+
+
+
End
+
2024-03-23 09:11:40.839935
+
+
+
Status code
+
0
+
+
+
Error
+
+
+
+
+
+ +

Run log

+
[09:11:33] Fetching Scraper for: ABC                              handlers.py:23
+[09:11:34] Begin attempting to scrape: ABC                        handlers.py:27
+           Deleting existing data...                                 base.py:251
+           Getting all files in Councillors...                       base.py:203
+           Getting all files in Councillors/json...                  base.py:203
+[09:11:35] ...found 16 files in Councillors/json                     base.py:219
+           Getting all files in Councillors/raw...                   base.py:203
+           ...found 16 files in Councillors/raw                      base.py:219
+           ...found 33 files in Councillors                          base.py:219
+           Deleting batch no. 1 consisting of 33 files               base.py:230
+           ...data deleted.                                          base.py:258
+           Scraping from                                              base.py:41
+           https://www.armaghbanbridgecraigavon.gov.uk/councillors/             
+[09:11:39] Committing batch 1 consisting of 32 files                 base.py:291
+[09:11:40] Finished attempting to scrape: ABC                        base.py:339
+
+ + + + +

2024-03-22

@@ -984,56 +1034,6 @@

Run log

- - - -

2024-03-03

-
-
-
-
-
Duration
-
7 seconds
-
-
-
Start
-
2024-03-03 09:53:49.552284
-
-
-
End
-
2024-03-03 09:53:57.022733
-
-
-
Status code
-
0
-
-
-
Error
-
-
-
-
-
- -

Run log

-
[09:53:49] Fetching Scraper for: ABC                              handlers.py:23
-           Begin attempting to scrape: ABC                        handlers.py:27
-           Deleting existing data...                                 base.py:251
-[09:53:50] Getting all files in Councillors...                       base.py:203
-           Getting all files in Councillors/json...                  base.py:203
-           ...found 16 files in Councillors/json                     base.py:219
-           Getting all files in Councillors/raw...                   base.py:203
-           ...found 16 files in Councillors/raw                      base.py:219
-           ...found 33 files in Councillors                          base.py:219
-           Deleting batch no. 1 consisting of 33 files               base.py:230
-[09:53:51] ...data deleted.                                          base.py:258
-           Scraping from                                              base.py:41
-           https://www.armaghbanbridgecraigavon.gov.uk/councillors/             
-[09:53:55] Committing batch 1 consisting of 32 files                 base.py:291
-[09:53:57] Finished attempting to scrape: ABC                        base.py:339
-
- -