Skip to content

Commit 96d69c6

Browse files
committed
Merge branch 'main' of https://github.com/patel-zeel/blog into main
2 parents 26634ae + c126062 commit 96d69c6

File tree

1 file changed

+19
-33
lines changed

1 file changed

+19
-33
lines changed

posts/2024-12-27-download_caaqm_locations copy.ipynb

Lines changed: 19 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"name": "stdout",
2626
"output_type": "stream",
2727
"text": [
28-
"rm: cannot remove 'log.txt': No such file or directory\n"
28+
"rm: log.txt: No such file or directory\n"
2929
]
3030
}
3131
],
@@ -62,33 +62,7 @@
6262
"cell_type": "code",
6363
"execution_count": 2,
6464
"metadata": {},
65-
"outputs": [
66-
{
67-
"name": "stderr",
68-
"output_type": "stream",
69-
"text": [
70-
"There was an error managing chromedriver (error sending request for url (https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json)); using driver found in the cache\n",
71-
"Error sending stats to Plausible: error sending request for url (https://plausible.io/api/event)\n"
72-
]
73-
},
74-
{
75-
"ename": "SessionNotCreatedException",
76-
"evalue": "Message: session not created: Chrome failed to start: exited normally.\n (session not created: DevToolsActivePort file doesn't exist)\n (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)\nStacktrace:\n#0 0x556d1853ab9a <unknown>\n#1 0x556d18220670 <unknown>\n#2 0x556d18258971 <unknown>\n#3 0x556d18254315 <unknown>\n#4 0x556d182a0e66 <unknown>\n#5 0x556d182a04b6 <unknown>\n#6 0x556d18294923 <unknown>\n#7 0x556d182626e7 <unknown>\n#8 0x556d182636de <unknown>\n#9 0x556d1850466b <unknown>\n#10 0x556d18508611 <unknown>\n#11 0x556d184f04e5 <unknown>\n#12 0x556d18509192 <unknown>\n#13 0x556d184d56ef <unknown>\n#14 0x556d185299d8 <unknown>\n#15 0x556d18529ba7 <unknown>\n#16 0x556d185399ec <unknown>\n#17 0x7fc996c7c609 start_thread\n",
77-
"output_type": "error",
78-
"traceback": [
79-
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
80-
"\u001b[0;31mSessionNotCreatedException\u001b[0m Traceback (most recent call last)",
81-
"Cell \u001b[0;32mIn[2], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Set up WebDriver\u001b[39;00m\n\u001b[1;32m 2\u001b[0m op \u001b[38;5;241m=\u001b[39m webdriver\u001b[38;5;241m.\u001b[39mChromeOptions()\n\u001b[0;32m----> 4\u001b[0m driver \u001b[38;5;241m=\u001b[39m \u001b[43mwebdriver\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mChrome\u001b[49m\u001b[43m(\u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mop\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m# Navigate to the website and manually solve the CAPTCHA\u001b[39;00m\n\u001b[1;32m 7\u001b[0m driver\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhttps://airquality.cpcb.gov.in/ccr/#/caaqm-dashboard-all/caaqm-landing\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
82-
"File \u001b[0;32m/opt/anaconda3/envs/zeel_py310/lib/python3.10/site-packages/selenium/webdriver/chrome/webdriver.py:45\u001b[0m, in \u001b[0;36mWebDriver.__init__\u001b[0;34m(self, options, service, keep_alive)\u001b[0m\n\u001b[1;32m 42\u001b[0m service \u001b[38;5;241m=\u001b[39m service \u001b[38;5;28;01mif\u001b[39;00m service \u001b[38;5;28;01melse\u001b[39;00m Service()\n\u001b[1;32m 43\u001b[0m options \u001b[38;5;241m=\u001b[39m options \u001b[38;5;28;01mif\u001b[39;00m options \u001b[38;5;28;01melse\u001b[39;00m Options()\n\u001b[0;32m---> 45\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[1;32m 46\u001b[0m \u001b[43m \u001b[49m\u001b[43mbrowser_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mDesiredCapabilities\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mCHROME\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mbrowserName\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 47\u001b[0m \u001b[43m \u001b[49m\u001b[43mvendor_prefix\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mgoog\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 48\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 49\u001b[0m \u001b[43m \u001b[49m\u001b[43mservice\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mservice\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 50\u001b[0m \u001b[43m \u001b[49m\u001b[43mkeep_alive\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mkeep_alive\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 51\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n",
83-
"File \u001b[0;32m/opt/anaconda3/envs/zeel_py310/lib/python3.10/site-packages/selenium/webdriver/chromium/webdriver.py:66\u001b[0m, in \u001b[0;36mChromiumDriver.__init__\u001b[0;34m(self, browser_name, vendor_prefix, options, service, keep_alive)\u001b[0m\n\u001b[1;32m 57\u001b[0m executor \u001b[38;5;241m=\u001b[39m ChromiumRemoteConnection(\n\u001b[1;32m 58\u001b[0m remote_server_addr\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mservice\u001b[38;5;241m.\u001b[39mservice_url,\n\u001b[1;32m 59\u001b[0m browser_name\u001b[38;5;241m=\u001b[39mbrowser_name,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 62\u001b[0m ignore_proxy\u001b[38;5;241m=\u001b[39moptions\u001b[38;5;241m.\u001b[39m_ignore_local_proxy,\n\u001b[1;32m 63\u001b[0m )\n\u001b[1;32m 65\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 66\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcommand_executor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mexecutor\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 67\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m:\n\u001b[1;32m 68\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mquit()\n",
84-
"File \u001b[0;32m/opt/anaconda3/envs/zeel_py310/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:241\u001b[0m, in \u001b[0;36mWebDriver.__init__\u001b[0;34m(self, command_executor, keep_alive, file_detector, options, locator_converter, web_element_cls, client_config)\u001b[0m\n\u001b[1;32m 239\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_authenticator_id \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 240\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstart_client()\n\u001b[0;32m--> 241\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstart_session\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcapabilities\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 242\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fedcm \u001b[38;5;241m=\u001b[39m FedCM(\u001b[38;5;28mself\u001b[39m)\n\u001b[1;32m 244\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_websocket_connection \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n",
85-
"File \u001b[0;32m/opt/anaconda3/envs/zeel_py310/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:329\u001b[0m, in \u001b[0;36mWebDriver.start_session\u001b[0;34m(self, capabilities)\u001b[0m\n\u001b[1;32m 322\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Creates a new session with the desired capabilities.\u001b[39;00m\n\u001b[1;32m 323\u001b[0m \n\u001b[1;32m 324\u001b[0m \u001b[38;5;124;03m:Args:\u001b[39;00m\n\u001b[1;32m 325\u001b[0m \u001b[38;5;124;03m - capabilities - a capabilities dict to start the session with.\u001b[39;00m\n\u001b[1;32m 326\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 328\u001b[0m caps \u001b[38;5;241m=\u001b[39m _create_caps(capabilities)\n\u001b[0;32m--> 329\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexecute\u001b[49m\u001b[43m(\u001b[49m\u001b[43mCommand\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mNEW_SESSION\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcaps\u001b[49m\u001b[43m)\u001b[49m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 330\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msession_id \u001b[38;5;241m=\u001b[39m response\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msessionId\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 331\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcaps \u001b[38;5;241m=\u001b[39m response\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcapabilities\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
86-
"File \u001b[0;32m/opt/anaconda3/envs/zeel_py310/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py:384\u001b[0m, in \u001b[0;36mWebDriver.execute\u001b[0;34m(self, driver_command, params)\u001b[0m\n\u001b[1;32m 382\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcommand_executor\u001b[38;5;241m.\u001b[39mexecute(driver_command, params)\n\u001b[1;32m 383\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m response:\n\u001b[0;32m--> 384\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43merror_handler\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcheck_response\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 385\u001b[0m response[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_unwrap_value(response\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m))\n\u001b[1;32m 386\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n",
87-
"File \u001b[0;32m/opt/anaconda3/envs/zeel_py310/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py:232\u001b[0m, in \u001b[0;36mErrorHandler.check_response\u001b[0;34m(self, response)\u001b[0m\n\u001b[1;32m 230\u001b[0m alert_text \u001b[38;5;241m=\u001b[39m value[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124malert\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtext\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 231\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exception_class(message, screen, stacktrace, alert_text) \u001b[38;5;66;03m# type: ignore[call-arg] # mypy is not smart enough here\u001b[39;00m\n\u001b[0;32m--> 232\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exception_class(message, screen, stacktrace)\n",
88-
"\u001b[0;31mSessionNotCreatedException\u001b[0m: Message: session not created: Chrome failed to start: exited normally.\n (session not created: DevToolsActivePort file doesn't exist)\n (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)\nStacktrace:\n#0 0x556d1853ab9a <unknown>\n#1 0x556d18220670 <unknown>\n#2 0x556d18258971 <unknown>\n#3 0x556d18254315 <unknown>\n#4 0x556d182a0e66 <unknown>\n#5 0x556d182a04b6 <unknown>\n#6 0x556d18294923 <unknown>\n#7 0x556d182626e7 <unknown>\n#8 0x556d182636de <unknown>\n#9 0x556d1850466b <unknown>\n#10 0x556d18508611 <unknown>\n#11 0x556d184f04e5 <unknown>\n#12 0x556d18509192 <unknown>\n#13 0x556d184d56ef <unknown>\n#14 0x556d185299d8 <unknown>\n#15 0x556d18529ba7 <unknown>\n#16 0x556d185399ec <unknown>\n#17 0x7fc996c7c609 start_thread\n"
89-
]
90-
}
91-
],
65+
"outputs": [],
9266
"source": [
9367
"# Set up WebDriver\n",
9468
"op = webdriver.ChromeOptions()\n",
@@ -115,7 +89,7 @@
11589
"name": "stdout",
11690
"output_type": "stream",
11791
"text": [
118-
"Total stations: 549\n"
92+
"Total stations: 558\n"
11993
]
12094
}
12195
],
@@ -135,16 +109,28 @@
135109
{
136110
"data": {
137111
"application/vnd.jupyter.widget-view+json": {
138-
"model_id": "5b712b4a44c34ab2828fb21e2e17ff0f",
112+
"model_id": "bbbf6e731094473995e1a676b3f8c5a4",
139113
"version_major": 2,
140114
"version_minor": 0
141115
},
142116
"text/plain": [
143-
"Progress: 0%| | 0/549 [00:00<?, ?it/s]"
117+
"Progress: 0%| | 0/558 [00:00<?, ?it/s]"
144118
]
145119
},
146120
"metadata": {},
147121
"output_type": "display_data"
122+
},
123+
{
124+
"ename": "KeyboardInterrupt",
125+
"evalue": "",
126+
"output_type": "error",
127+
"traceback": [
128+
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
129+
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
130+
"Cell \u001b[0;32mIn[4], line 12\u001b[0m\n\u001b[1;32m 10\u001b[0m marker \u001b[38;5;241m=\u001b[39m all_station_markers[marker_id]\n\u001b[1;32m 11\u001b[0m driver\u001b[38;5;241m.\u001b[39mexecute_script(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124marguments[0].click();\u001b[39m\u001b[38;5;124m\"\u001b[39m, marker)\n\u001b[0;32m---> 12\u001b[0m \u001b[43mWebDriverWait\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdriver\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m10\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43muntil\u001b[49m\u001b[43m(\u001b[49m\u001b[43mEC\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43melement_to_be_clickable\u001b[49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[43mBy\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mCLASS_NAME\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mclose\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m children \u001b[38;5;241m=\u001b[39m driver\u001b[38;5;241m.\u001b[39mfind_elements(By\u001b[38;5;241m.\u001b[39mCLASS_NAME, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcol-md-12\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mStation Name\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01min\u001b[39;00m children[\u001b[38;5;241m3\u001b[39m]\u001b[38;5;241m.\u001b[39mtext\n",
131+
"File \u001b[0;32m/opt/miniconda3/lib/python3.12/site-packages/selenium/webdriver/support/wait.py:102\u001b[0m, in \u001b[0;36mWebDriverWait.until\u001b[0;34m(self, method, message)\u001b[0m\n\u001b[1;32m 100\u001b[0m screen \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(exc, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mscreen\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 101\u001b[0m stacktrace \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(exc, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstacktrace\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m--> 102\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_poll\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 103\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m time\u001b[38;5;241m.\u001b[39mmonotonic() \u001b[38;5;241m>\u001b[39m end_time:\n\u001b[1;32m 104\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n",
132+
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
133+
]
148134
}
149135
],
150136
"source": [
@@ -273,7 +259,7 @@
273259
],
274260
"metadata": {
275261
"kernelspec": {
276-
"display_name": "zeel_py310",
262+
"display_name": "base",
277263
"language": "python",
278264
"name": "python3"
279265
},
@@ -287,7 +273,7 @@
287273
"name": "python",
288274
"nbconvert_exporter": "python",
289275
"pygments_lexer": "ipython3",
290-
"version": "3.10.15"
276+
"version": "3.12.2"
291277
}
292278
},
293279
"nbformat": 4,

0 commit comments

Comments
 (0)