برای مقایسهٔ فضاهای کار اشتراکی یا تهیهٔ یک فهرست قابل جستوجو، داشتن اطلاعات نقشه در قالب جدول کاربردی است. پروژهٔ coworkmap-crawler دادههای نقشهٔ Coworkmap را دریافت میکند و نام، استان و اطلاعات تماس هر فضا را در یک فایل CSV قرار میدهد؛ فایلی که میتوان آن را در صفحهگسترده باز کرد یا به ابزارهای پردازش داده داد.
این ابزار یک اسکریپت کوچک Python است. Requests دریافت داده از شبکه را انجام میدهد و ماژول استاندارد csv مسئول نوشتن خروجی است.
از دادهٔ نقشه تا جدول
طبق کد برنامه، ورودی یک فایل GeoJSON با نشانی ثابت است:
https://geeleemcontent.ir/bluewhite/mapdata/mapdata/saved/mapdata-cowork.geojson
برنامه این فایل را با یک درخواست HTTP دریافت میکند، وضعیت پاسخ را با raise_for_status() بررسی میکند و سپس سراغ آرایهٔ features میرود. از بخش properties هر عضو، پنج فیلد انتخاب میشود:
| ستون | محتوا |
|---|---|
province |
استان |
name |
نام فضای کار |
phone |
شمارهٔ تماس |
website |
نشانی وبسایت |
address |
نشانی محل |
اگر یکی از این کلیدها وجود نداشته باشد، مقدار آن رشتهٔ خالی خواهد بود. ردیفها ابتدا بر اساس province و سپس name مرتب میشوند و با کدگذاری UTF-8 در فایل coworkmap.csv نوشته میشوند. مرتبسازی، مقایسهٔ معمول رشتهها در Python است و قواعد اختصاصی مرتبسازی فارسی ندارد.
این مسیر پردازش به دریافت همان فایل داده محدود است؛ برنامه صفحات HTML را پیمایش نمیکند و مرورگر خودکار راه نمیاندازد. همچنین مختصات جغرافیایی بخش geometry به خروجی منتقل نمیشود.
نصب و اجرا
به Python ۳، ابزارهای venv و pip و دسترسی شبکه به منبع داده نیاز دارید. برای دریافت مخزن با دستورهای زیر، Git نیز باید نصب باشد. مراحل مطابق راهنمای پروژه هستند؛ فعالسازی محیط مجازی در این نمونه برای Bash یا Zsh است:
git clone https://github.com/hatamiarash7/coworkmap-crawler.git
cd coworkmap-crawler
python3 -m venv .venv
source .venv/bin/activate
pip install requests
python3 main.py
پس از اجرای موفق، فایل coworkmap.csv در پوشهٔ جاری ساخته میشود. ترتیب ستونهای سطر اول آن چنین است:
province,name,phone,website,address
برای استفاده در یک صفحهگسترده، فایل را با کدگذاری UTF-8 و جداکنندهٔ ویرگول وارد کنید. بهتر است نوع ستون phone را متنی انتخاب کنید تا صفر ابتدای شمارهها هنگام وارد کردن داده حذف نشود. سپس میتوانید ردیفها را بر اساس استان فیلتر کنید یا نام و نشانی فضاها را جستوجو کنید.
تنظیمات و محدودیتها
نشانی ورودی در متغیر url و نام خروجی در csv_filename داخل main.py تعریف شدهاند. برای تغییر آنها باید همین فایل را ویرایش کنید؛ گزینهٔ خط فرمان یا فایل تنظیمات جداگانهای وجود ندارد. اگر منبع دیگری را جایگزین میکنید، ساختار features و کلیدهای properties باید با انتظار برنامه سازگار باشند.
هر اجرا یک بار داده را دریافت و خروجی را بازنویسی میکند. فایل CSV قبلی جایگزین میشود؛ برای نگهداری تاریخچه، پیش از اجرای بعدی از آن نسخهای با نام دیگر نگه دارید. حذف موارد تکراری، اعتبارسنجی شمارهها یا بررسی فعالبودن وبسایتها در اسکریپت انجام نمیشود و کیفیت خروجی به دادهٔ منبع وابسته است.
درخواست شبکه مهلت زمانی صریح یا تلاش مجدد خودکار ندارد. خطای HTTP یا پاسخ JSON نامعتبر اجرای برنامه را متوقف میکند. از طرف دیگر، اگر پاسخ JSON فاقد کلید features باشد، برنامه فهرست خالی در نظر میگیرد و CSV فقط با سطر عنوان ساخته میشود؛ بنابراین ساختهشدن فایل بهتنهایی نشانهٔ دریافت اطلاعات کامل نیست.
کد پروژه با مجوز MIT منتشر شده است و نمونهای ساده از تبدیل دادهٔ ساختاریافتهٔ یک نقشه به جدولی قابل استفاده در ابزارهای دیگر ارائه میدهد.