Yazılım | Programlama Bir Siteden PHP ile Nasıl Veri Çekebilirim ?

Ryloka

Katılımcı Üye
22 Nis 2015
891
1
Altay
Merhabalar dostlar, Websiteme https://ebijuteri.com sitesinden stok bilgisi çekmek istiyorum farklı sitelerde
Kod:
preg_match_all();
Koduyla ürün sayfasından stok adeti verisini çekmeyi başarsam da maalesef bu sitede çekemiyorum hangi yöntemi kullanmam gerekiyor? Nasıl çekebilirim?
 
Moderatör tarafında düzenlendi:

CH4M3

Uzman üye
19 Ağu 2017
1,926
1
16
php island
Cevap: PHP Veri Çekme HK.

Merhabalar dostlar, Websiteme https://ebijuteri.com sitesinden stok bilgisi çekmek istiyorum farklı sitelerde
Kod:
preg_match_all();
Koduyla ürün sayfasından stok adeti verisini çekmeyi başarsam da maalesef bu sitede çekemiyorum hangi yöntemi kullanmam gerekiyor? Nasıl çekebilirim?

Öncelikle her sitedeki içeriğin stok bilgisini almak kolay olmayabilir. Eğer bir endpoint, bir api yok ise, html den verileri çıkartmanız gerekir.

Attığınız sitenin networküne baktığımda bir endpoint olduğunu görüntüledim. Ürünlerin tüm detayları (stok bilgisi dahil) bulunuyor. Bu endpointe istek atarak içeriklere erişebilirsiniz.

Fakat şöyle bir durum var. Söz konusu endpointe istek atabilmeniz çok basit olmayacak :) Api Token gerekiyor ve bunun yanı sıra header'daki host bilgisine falan da bakıyor olabilir. Bu durumda yukarıda bahsettiğim html içinden veri çekme konusuna başvurabilirsiniz. Ya da aşağıda resimde gösterdiğim network tabından sayfaya girdiğinizde product xhr requestini bulup response içeriğini manuel şekilde json şekilde alıp php de manipüle ederek kullanabilirsiniz.

image.png


image.png




Bahsettiğim html içinden verileri çekme konusunu DomCrawler ile yapmak çok da zor değil. Daha önce birkaç kez yaptım. https://github.com/symfony/dom-crawler
 

Ryloka

Katılımcı Üye
22 Nis 2015
891
1
Altay
Cevap: PHP Veri Çekme HK.


Öncelikle her sitedeki içeriğin stok bilgisini almak kolay olmayabilir. Eğer bir endpoint, bir api yok ise, html den verileri çıkartmanız gerekir.

Attığınız sitenin networküne baktığımda bir endpoint olduğunu görüntüledim. Ürünlerin tüm detayları (stok bilgisi dahil) bulunuyor. Bu endpointe istek atarak içeriklere erişebilirsiniz.

Fakat şöyle bir durum var. Söz konusu endpointe istek atabilmeniz çok basit olmayacak :) Api Token gerekiyor ve bunun yanı sıra header'daki host bilgisine falan da bakıyor olabilir. Bu durumda yukarıda bahsettiğim html içinden veri çekme konusuna başvurabilirsiniz. Ya da aşağıda resimde gösterdiğim network tabından sayfaya girdiğinizde product xhr requestini bulup response içeriğini manuel şekilde json şekilde alıp php de manipüle ederek kullanabilirsiniz.

image.png


image.png




Bahsettiğim html içinden verileri çekme konusunu DomCrawler ile yapmak çok da zor değil. Daha önce birkaç kez yaptım. https://github.com/symfony/dom-crawler

Cevabınız için çok teşekkür ederim görsellerle anlattığınız şekilde veri çekmeyi maalesef tam anlayamadım. DomCrawler kullanmak galiba daha mantıklı olacak. Nasıl kullanabileceğime dair bir döküman var mı acaba? Bunun yanında preg_match_all(); kullandığımda boş veri vermesinin sebebi ne olabilir?
 

CH4M3

Uzman üye
19 Ağu 2017
1,926
1
16
php island
Cevap: PHP Veri Çekme HK.

Cevabınız için çok teşekkür ederim görsellerle anlattığınız şekilde veri çekmeyi maalesef tam anlayamadım. DomCrawler kullanmak galiba daha mantıklı olacak. Nasıl kullanabileceğime dair bir döküman var mı acaba? Bunun yanında preg_match_all(); kullandığımda boş veri vermesinin sebebi ne olabilir?

Tekrardan selamlar, şimdi ss'te gösterdiğim yerde (network tabında) 2 adet XHR (sayfa içi) request var. birisi ürünlerin tümünü çekiyor. Önceki ekran görüntülerinden de görebilirsiniz ki o requestin adı "products" olarak gözüküyor. Ona tıkladığınızda requestin detaylarına ulaşabilirsiniz.

Request url'i: https://app.ebijuteri.com/api/showcases/multi/products

Bu Url'e manuel gittiğiniz login sayfası karşınıza geliyor. Sebebi ise sayfa dışında başka yerden her isteyen request atamasın diye api token'e bağlamışlar.

Request Header'a baktığımda "api-token" key karşısında şu değeri görüyorum:

"MkjvxqPNM36L21vV8tEuJZhtaagd1AZJeqfHO1c8dpBwyNAX3gceuHdjOpPh"

Siz de php de curl ile request atarak denerseniz ve headera da aynı sitedeki request headerdaki gibi api tokeni tanımlarsanız, php üzerinden BELKİ json olarak verileri çekebilirsiniz.

DomCrawler için dökümantasyon bulunuyor. https://symfony.com/doc/current/components/dom_crawler.html composer ile projenize ekleyerek kullanabiirsiniz. Dökümanda gerekli her şey bulunuyor zaten.

preg_match_all function'ını nasıl kullandığınızı kodlarla paylaşabilirseniz daha sağlıklı bir cevap verebilirim.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.