Çok Yakında Yeni Bir Arayüzle karşınızdayız! http://yeni.delphican.com/

Konuyu Oyla:
  • Derecelendirme: 2/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
web üzerinden veri kaydetme ve veri çekme
#1
masaüstü programındaki bir modülü (Randevu kayıt) İnternette kullanıcının kaydettiği veriyi masaüstünden çekmek istiyorum.. bunun için nasıl bir yol izlemem gerek net üzerinden
masaüstü programım hazır... ama web modülü yok...
Cevapla
#2
(12-12-2018, Saat: 10:01)murtishow76 Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.masaüstü programındaki bir modülü (Randevu kayıt) İnternette kullanıcının kaydettiği veriyi masaüstünden çekmek istiyorum.. bunun için nasıl bir yol izlemem gerek net üzerinden
masaüstü programım hazır... ama web modülü yok...

Fikir vermesi açısından benim kullandığım sistemde

iş yerine  sql server çalıştıran basit bir makine kurdum.
web sayfası üzerinden ön siparişleri bu sql server' a kaydediyorum.

iş yerindeki  2. asıl ana makinede bulunan programdan her 10 dakikada bir (ayarlanabilir)   basit makinedeki database bağlanıyor
verileri çekiyor kontrol işlemlerini yaptıktan sonra ana programa ekliyor ve ilgili kişi veya firmaya siparişinin alındığına dair
mail atıyor.


iki server olması güvenlik açısından sadece basit makine internete açık diğeri local ağda çalışıyor.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#3
eğer internet sitesinde kullanıcının girdiği  veri herhangi bir linkte listeleniyorsa ,  veri çekeceğiniz sistem sizinle veri tabanını paylaşmıyorsa ya da erişim izniniz yoksa bu şekilde çekebilirsiniz.
Aslında aşağıdaki bot tarzı bir  örnek, dezavantajı veri çektiğiniz id ler değişirse sorun sorun çıkabilir. bunu aşmak için de siteyi haritalama lazım.

var
uname,password:string;
begin
WebBrowser1.Navigate( 'site adresi' );
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
Pause(2000); // 5ms delay before re-testing
WebBrowser1.OleObject.Document.GetElementByID('div/input v.s tagı içindeki id').Value  := uname;
WebBrowser1.OleObject.Document.GetElementByID('div/input v.s tagı içindeki id').Value  := password;
WebBrowser1.OleObject.Document.GetElementByID('tıklanacak butonun id si').Click;
end;
//bununla randevu sisteminde veya herhangi bir sistemden online olabilirsiniz . 


function ExtractBetween(const Value, A, B: string): string;
var
 aPos, bPos: Integer;
begin
 result := '';
 aPos := Pos(A, Value);
 if aPos > 0 then begin
   aPos := aPos + Length(A);
   bPos := PosEx(B, Value, aPos);
   if bPos > 0 then begin
     result := Copy(Value, aPos, bPos - aPos);
   end;
 end;
end;


//kullanımı  
ExtractBetween(<div>sa</div>,<div>,</div>);
burda sonuc sa döner

devamını getirebilirsiniz
Cevapla
#4
Bu konuda uzman olan arkadaşlara ek bir soru iletiyorum. jQuery kullanılarak yapılan bir sistemde çeşitli açılır menülerdeki elementlere tıklama, veri doldurma, veri çekme ve birden fazla alandaki verileri kullanarak form gönderme işlemlerini yapabilmek için en basit yöntem nedir? ElementID bazlı olarak çalılşacak çeşitli iş fonksiyonları yapıp (örn. NesneBul('#KullaniciAdi'); ) kullanmak mı? Label olarak sunulan hata mesajlarını da işlemek için bir yöntem var mı? (Onlarda genellikle id bulunmuyor)
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#5

(14-12-2018, Saat: 21:58)okoca Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.ben olsam browser üzerinden erişme yoluna gitmezdim, ilgili url adresinin get post yapılarını inceleyerek direk idhttp ile hallederdim, contenti parselerdim. en güzeli bir json arabirimi yaratmak, böylece db ye bağlanan exe yi kaptırdığınızda içindeki db login bilgileride gitmemiş olur.
(sql de 2. user yaratıp delete insert update gibi yetkilerini alıp bu kullanıcıyı kullanmakda mantıklı olabilir) Smile)

Evet hocam, bence de indy daha iyi, fakat benim kullandığım ağın güvenlik duvarı indy ile açılmama izin vermiyordu.  ondan dolayı web browser yaptım. Web browser güvenlik duvarını da aşıyordu.


(14-12-2018, Saat: 18:26)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Bu konuda uzman olan arkadaşlara ek bir soru iletiyorum. jQuery kullanılarak yapılan bir sistemde çeşitli açılır menülerdeki elementlere tıklama, veri doldurma, veri çekme ve birden fazla alandaki verileri kullanarak form gönderme işlemlerini yapabilmek için en basit yöntem nedir? ElementID bazlı olarak çalılşacak çeşitli iş fonksiyonları yapıp (örn. NesneBul('#KullaniciAdi'); ) kullanmak mı? Label olarak sunulan hata mesajlarını da işlemek için bir yöntem var mı? (Onlarda genellikle id bulunmuyor)


Konuda uzmanlığım yok ama daha önce uğraşmıştım. Aşağıdaki örnek ile NesneBul('#KullaniciAdi'); gibi bir fonksiyon yapılarak geliştirilebilir.  Ayrıca açılır kapanır menülerde jqeury kullananlar nesneye hide özelliği verebiliyor. hide özelliği de sadece display none yapıyor. yani aşağıdaki yöntem ve yukarıda belirttiğim yöntem ile bu  şekilde kullanılan sitelerde rahatlıkla işlem yapılabiliyor. Benim yaptığım bazı işlerde bu  yöntem işe yarıyordu.   bu 1. yöntem galiba
  
Ancak jquery de nesneyi remove yaptılarsa o zaman satır tamamen siliniyor.  bu durum başıma gelmişti, alamadım. 
 
Yalnız bazen  çok js içeren sayfalarda web browserde sayfalar arası geçişte veya yapılan diğer işlemlerde ekrana gelen mesaj diyaloglarına tıklamam gerekiyordu. 
Bu konuda da başarılı olamamıştım 
Labeldeki hata mesajlarını işlemek nasıl oluyor onu bilmiyorum.  yardımcı  olabilecek varsa ben de faydalanmak isterim.    

procedure TForm1.Button1Click(Sender: TObject);
var
x,i: integer;
ovLinks: OleVariant;
begin
// get all anchors
ovLinks := WebBrowser1.OleObject.Document.all.tags('A');
if ovLinks.Length > 0 then
begin
for x := 0 to ovLinks.Length-1 do
begin
// only operate on the /threads/ link
if Pos('forumdisplay.php?fid=6', ovLinks.Item(x).href) > 0 then
begin
ovLinks.Item(x).click;
Break;
end;
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('www.delphican.com');
end;
Cevapla
#6
(14-12-2018, Saat: 18:26)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Bu konuda uzman olan arkadaşlara ek bir soru iletiyorum. jQuery kullanılarak yapılan bir sistemde çeşitli açılır menülerdeki elementlere tıklama, veri doldurma, veri çekme ve birden fazla alandaki verileri kullanarak form gönderme işlemlerini yapabilmek için en basit yöntem nedir? ElementID bazlı olarak çalılşacak çeşitli iş fonksiyonları yapıp (örn. NesneBul('#KullaniciAdi'); ) kullanmak mı? Label olarak sunulan hata mesajlarını da işlemek için bir yöntem var mı? (Onlarda genellikle id bulunmuyor)

Hocam bu tür işlerde özel bir nedeni yoksa ben artık python ve selenium kullanıyorum ilgili sayfanın almak istediğim class yada css path'ini firefox veya chrome ile sağ tıklayıp öğeyi incele deyip gelen ekranda ilgili yere sağ tıklayıp xpath kopyala diyerek ulaşması zor alanları dahi alabiliyorum n11 ürün sayfasından ürün adı fiyatı mağaza adını çeken küçük bir örnek yaptım
from selenium import webdriver

def get_n11_product(url):
   wd = webdriver.Firefox()
   wd.implicitly_wait(30)
   wd.get(url)
   urun_adi = wd.find_element_by_xpath("/html/body/div[1]/div[2]/div/div[3]/div[2]/div[1]/div/h1")
   fiyati = wd.find_element_by_xpath( '/html/body/div[1]/div[2]/div/div[3]/div[2]/div[3]/div[2]/div/div[1]/div/ins')
   magaza_adi = wd.find_element_by_xpath("/html/body/div[1]/div[2]/div/aside/div[1]/div[1]/h3/a")

   print('Ürün Adı   :', urun_adi.text)
   print('Fiyatı     :', fiyati.text)
   print('Mağaza Adı :', magaza_adi.text)


product_url = input('N11 urun Url Giriniz: ')
get_n11_product(product_url)

eğer scrol kaydırma sürükle bırak gibi işlemler olursada javascripte kodunu yazıp js kodunu wd.execute_script(my_js_code) şeklinde çalıştırıyorum

“Do. Or do not. There is no try.”
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  ListView Bileşeninde Seçili Satırın Veri Tabanından Silinmesi bünyamin68 5 195 25-11-2019, Saat: 21:44
Son Yorum: BGNew
  Paradox veri tabanında veri arama listeleme düzenleme sonic33 2 161 26-10-2019, Saat: 10:43
Son Yorum: sonic33
  Comboboxa girilen değere göre veri çekme. bünyamin68 4 273 06-10-2019, Saat: 10:16
Son Yorum: bünyamin68
  Server-client üzerinden Web arayüze erişim SercanTEK 10 613 02-10-2019, Saat: 10:33
Son Yorum: bilsoft8b
  ComboBox1 İçeriğini Kaydetme OZCANK 15 654 16-09-2019, Saat: 09:25
Son Yorum: Fesih ARSLAN



Konuyu Okuyanlar: 1 Ziyaretçi