aboutsummaryrefslogtreecommitdiff
path: root/scrape_ecourtindia_v6/scrape_case_status.py
diff options
context:
space:
mode:
Diffstat (limited to 'scrape_ecourtindia_v6/scrape_case_status.py')
-rw-r--r--scrape_ecourtindia_v6/scrape_case_status.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/scrape_ecourtindia_v6/scrape_case_status.py b/scrape_ecourtindia_v6/scrape_case_status.py
new file mode 100644
index 0000000..2b543ba
--- /dev/null
+++ b/scrape_ecourtindia_v6/scrape_case_status.py
@@ -0,0 +1,89 @@
+import csv
+from modules.scraper_case_status import ScraperCaseStatus
+from concurrent.futures import ThreadPoolExecutor, as_completed
+import threading
+
+SCRAPE_ESTABLISHMENTS = True
+
+class ThreadSafeCSVWriter:
+ def __init__(self, filename):
+ self.file = open(filename, 'w', newline='')
+ self.writer = csv.writer(self.file)
+ self.lock = threading.Lock()
+
+ def writerow(self, row):
+ with self.lock:
+ self.writer.writerow(row)
+
+ def close(self):
+ self.file.close()
+
+def scrape_state_thread(state, config, csv_writer):
+ scraper = ScraperCaseStatus(config)
+ scraper.close_modal()
+ try:
+ scraper.select('sess_state_code', state)
+ for district in scraper.scrape_districts():
+ scraper.select('sess_dist_code', district)
+ for cmplx in scraper.scrape_complexes():
+ scraper.select('court_complex_code', cmplx)
+ if SCRAPE_ESTABLISHMENTS:
+ establishments = []
+ for establishment in scraper.scrape_establishments():
+ establishments.append(establishment)
+
+ csv_writer.writerow([ state, district, cmplx ] + establishments)
+ else:
+ csv_writer.writerow([ state, district, cmplx ])
+ except Exception as e:
+ print(f"Error scraping {state}: {e}")
+ finally:
+ scraper.driver.quit()
+
+def scrape_courts():
+ config = {}
+
+ m = ScraperCaseStatus(config)
+ m.close_modal()
+
+ csv_writer = ThreadSafeCSVWriter('csv/courts.csv')
+ csv_writer.writerow(['State', 'District', 'Complex'])
+
+ states = m.scrape_states()
+ m.driver.close()
+
+ with ThreadPoolExecutor(max_workers=5) as executor:
+ futures = [
+ executor.submit(scrape_state_thread, state, config, csv_writer)
+ for state in states
+ ]
+
+ for future in as_completed(futures):
+ try:
+ future.result()
+ except Exception as e:
+ print(f"A thread encountered an error: {e}")
+
+ csv_writer.close()
+
+def scrape_orders():
+ config = {}
+
+ m = ScraperCaseStatus(config)
+ m.close_modal()
+
+ config['state'] = input('Select a state: ')
+ config['district'] = input('Select a district: ')
+ config['court_complex'] = input('Select a court complex: ')
+ config['court_establishment'] = input('Select a court establishment: ')
+ config['act'] = input('Select an act: ')
+
+ m.select_court()
+ m.goto_acts()
+ m.select_act()
+ m.handle_table()
+
+ m.driver.close()
+
+if __name__ == '__main__':
+ scrape_courts()