A Laravel command to scrape address data (provinces, districts, neighborhoods) from PTT's postal code website.
- Scrapes all provinces, districts, and neighborhoods from PTT
- Saves data in JSON format
- Shows progress with colored console output
- Handles Turkish characters
- Cross-platform compatible (Windows/Linux)
- Rate limiting to prevent server overload
- Error handling and recovery
- Live progress tracking
- PHP >= 7.4
- Laravel >= 8.x
- Composer
- GuzzleHttp
- Install the required package:
composer require guzzlehttp/guzzle
- Create the command:
php artisan make:command ScrapePttAddress
- Copy the provided code to
app/Console/Commands/ScrapePttAddress.php
Run the command:
php artisan scrape:ptt-address
The script will:
- Connect to PTT's website
- Scrape all provinces
- Get districts for each province
- Get neighborhoods for each district
- Save data to
storage/app/ptt_address_data.json
[
{
"il_id": "1",
"il_adi": "ADANA",
"ilceler": [
{
"ilce_id": "12",
"ilce_adi": "ALADAG",
"mahalleler": [
{
"mahalle_id": "1_2",
"mahalle_adi": "AKOREN MAH",
"posta_kodu": "01722"
}
]
}
]
}
]
- The script includes comprehensive error handling
- Recovers from connection issues
- Logs errors to console
- Saves progress regularly
PTT'nin posta kodu web sitesinden adres verilerini (il, ilçe, mahalle) çeken Laravel komutu.
- Tüm il, ilçe ve mahalleleri PTT'den çeker
- Verileri JSON formatında kaydeder
- Renkli konsol çıktısıyla ilerlemeyi gösterir
- Türkçe karakterleri düzgün işler
- Çoklu platform desteği (Windows/Linux)
- Sunucu yükünü önlemek için hız sınırlaması
- Hata yönetimi ve kurtarma
- Canlı ilerleme takibi
- PHP >= 7.4
- Laravel >= 8.x
- Composer
- GuzzleHttp
- Gerekli paketi yükleyin:
composer require guzzlehttp/guzzle
- Komutu oluşturun:
php artisan make:command ScrapePttAddress
- Verilen kodu
app/Console/Commands/ScrapePttAddress.php
dosyasına kopyalayın
Komutu çalıştırın:
php artisan scrape:ptt-address
Script şunları yapacak:
- PTT web sitesine bağlanır
- Tüm illeri çeker
- Her il için ilçeleri alır
- Her ilçe için mahalleleri alır
- Verileri
storage/app/ptt_address_data.json
dosyasına kaydeder
[
{
"il_id": "1",
"il_adi": "ADANA",
"ilceler": [
{
"ilce_id": "12",
"ilce_adi": "ALADAG",
"mahalleler": [
{
"mahalle_id": "1_2",
"mahalle_adi": "AKOREN MAH",
"posta_kodu": "01722"
}
]
}
]
}
]
- Script kapsamlı hata yönetimi içerir
- Bağlantı sorunlarından kurtarır
- Hataları konsola loglar
- İlerlemeyi düzenli olarak kaydeder