Town Overview
Geopolitical & Economic Summary:
Henties Bay is a picturesque coastal town located in the Erongo Region of west-central Namibia, approximately 70 kilometers north of Swakopmund. Situated at the mouth of the Omaruru River, it operates under the jurisdiction of a local municipality and serves as a premier holiday and angling destination along the rugged Skeleton Coast. While its permanent resident population is relatively modest, the town swells significantly during school holidays and festive seasons as anglers, 4x4 enthusiasts, and coastal vacationers arrive. The local economy is driven primarily by coastal tourism, recreational fishing, hospitality, retail services, and property development, alongside its unique status as a tranquil retirement haven.
Key Tourist Places of Interest & Landmarks:
- The Atlantic Shoreline & Prime Angling Beaches: Renowned globally as a world-class surf-angling destination, particularly for catching kabeljou (cob), steenbras, and galjoen along the pristine Atlantic coast.
- The Omaruru River Delta: A scenic dry riverbed area intersecting the town, offering unique desert-meets-ocean landscapes and opportunities for peaceful coastal walks.
- Jakkalsputz & Fisherman's Spots: Famous coastal camping and fishing spots stretching south of the town, deeply steeped in local angling lore and outdoor tradition.
- Henties Bay Golf Course: A unique desert-links golf course providing a tranquil sporting oasis right on the edge of the Atlantic coast.
- Zeila Shipwreck: Located a short drive south of Henties Bay near Cape Cross, this prominent and haunting stranded wreck serves as a favorite landmark and photography stop for coastal travelers.
Map of Henties Bay
Henties Bay Business Directory
import pandas as pd import os def generate_town_directories(): output_dir = "." csv_path = "Final namibia_directory_business_split.csv" if not os.path.exists(csv_path): print(f"Error: Could not find '{csv_path}' in this folder.") return # Load the dataset df = pd.read_csv(csv_path) # Official 41 towns list from your master schedule official_towns = [ "Arandis", "Karibib", "Henties Bay", "Omaruru", "Swakopmund", "Walvis Bay", "Usakos", "Aranos", "Gibeon", "Mariental", "Rehoboth", "Berseba", "Bethanie", "Karasburg", "Keetmanshoop", "Lüderitz", "Oranjemund", "Rundu", "Nkurenkuru", "Windhoek", "Kamanjab", "Khorixas", "Outjo", "Opuwo", "Eenhana", "Helao Nafidi", "Gobabis", "Outapi", "Oshikuku", "Ruacana", "Oshakati", "Ongwediva", "Ondangwa", "Omuthiya", "Tsumeb", "Grootfontein", "Okakarara", "Okahandja", "Otavi", "Otjiwarongo", "Katima Mulilo" ] # AdSense Publisher ID and Slots configuration adsense_client = "ca-pub-4307623590647088" def get_ad_snippet(slot_id): return f""" """ for town in official_towns: # Filter rows for the specific town (case-insensitive check) town_df = df[df['town'].astype(str).str.strip().str.lower() == town.lower()] if town_df.empty: print(f"Skipping {town}: No matching records found in CSV.") continue # Format filename safely safe_filename = "".join(c if c.isalnum() else "_" for c in str(town)).lower() file_path = os.path.join(output_dir, f"{safe_filename}_directory.html") html_content = [] html_content.append(f"\n") # Categorized Business Tables using 'business_type' categories = town_df['business_type'].dropna().unique() total_categories = len(categories) mid_point = total_categories // 2 for idx, category in enumerate(categories): cat_df = town_df[town_df['business_type'] == category] html_content.append(f"{category}
") html_content.append('| Business Name | ') html_content.append('International Phone | ') html_content.append('Address / Details | ') html_content.append('
|---|---|---|
| {b_name} | ') html_content.append(f'{phone} | ') html_content.append(f'{details} | ') html_content.append(f'