Geekflare Meta Kazıma API'sini Kullanarak Web Sitesi Meta Verilerini Çıkarma

Yayınlanan: 2022-11-30

Genel olarak, web kazıma, bir web sayfası yüklendiğinde üretilen HTML'den bir web sitesinden veri çıkarmaktır.

Metascraping, web sayfasının meta verilerini bir web sayfasının meta etiketlerinden çıkarmaktır.

Bir web sayfasının meta verileri, sayfa hakkında bilgidir ancak sayfanın içeriği değildir. Örneğin, meta veriler yazarın adını, başlığını ve web sayfasının açıklamasını içerebilir.

Kullanıcıların ve arama motorlarının sayfanın ne hakkında olduğunu anlamasına yardımcı olur. Meta verileri kazımak, bir kullanıcının web sayfaları hakkında daha kısa sürede hızlı bir şekilde bilgi toplamasına olanak tanır.

Manuel olarak kazıma, bir kitaplık kullanma veya Geekflare Metascraping API gibi bir API kullanma dahil olmak üzere web sayfalarını meta verileri için hurdaya çıkarmak için çeşitli yaklaşımlar kullanılabilir.

Bir Kediyi Öldürmenin Birçok Yolu

Manuel olarak hurdaya çıkarmak için, Chrome DevTools kullanılarak bir web sayfası açılabilir ve Meta veriler Elements sekmesinden çıkarılabilir. Ancak, bu kılavuz, birden çok sayfayla uğraşırken tekrarlayıcı ve sıkıcıdır. Birden fazla yaklaşım kullanarak görevi otomatik hale getirebiliriz:

İlk yaklaşım , kodu sıfırdan yazmaktır. Bu yaklaşımda, meta verilerini çıkarmak istediğiniz web sitesine bir HTTP isteği yaparsınız. Daha sonra, düzenli ifadeler veya kalıp eşleştirme kullanarak yanıt HTML'sini meta etiketlerden veri ayıklayarak ayrıştırabilirsiniz. Ancak, mevcut kodu yeniden yazmak için zaman harcayacağınız için bu yaklaşım tekerleği yeniden icat ediyor.

İkinci yaklaşım , tercih ettiğiniz programlama dilinde bir kitaplık kullanmaktır. Bu, uygulama ayrıntılarını soyutlamanıza olanak tanır ve işleri basitleştirir. Ancak seçtiğiniz programlama dili uygun bir kütüphaneye sahip değilse veya kullandığınız çalışma zamanı kütüphaneyi desteklemiyorsa kullanamazsınız.

Üçüncü yaklaşım , Geekflare Metascraping API gibi bir API kullanmaktır. Bu yaklaşım idealdir çünkü programlama diliniz ne olursa olsun size tek tip bir arayüz sağlar. HTTP istekleri yapmayı desteklediği sürece herhangi bir dilde kullanılabilir.

Bu makale, Geekflare Metascraping API'sinin cURL, PHP ve JavaScript(NodeJS) ile nasıl kullanılacağını gösterecektir.

Neden Geekflare Metascraping API'sini Kullanmalısınız?

Diğer yaklaşımların dezavantajları nedeniyle Geekflare API kullanmanın avantajları şunlardır:

  • Dil ve çalışma zamanı ortamından bağımsızdır.
  • Tekerleği yeniden icat etmekten kaçınır ve kod yazmak için daha az zaman harcarsınız.
  • Birden çok web sitesini verimli bir şekilde (birkaç saniye içinde) kazıyabilirsiniz.
  • Kullanımı inanılmaz derecede kolaydır.
  • Ücretsiz olarak kullanabilirsiniz.

Geekflare API'sini Kullanmaya Başlarken

Geekflare API'sini kullanmak için bir API anahtarına ihtiyacınız olacak. Bir tane edinmek için Geekflare Web Sitesine gidin ve ücretsiz bir hesap oluşturun. Hesabınızı oluşturduktan sonra kontrol paneline giriş yapın. Kontrol panelinden API anahtarınızı görebilmeniz gerekir.

Geekflare-Dashboard-1

Geekflare Metascraping API'sine Genel Bakış

API uç noktası https://api.geekflare.com/metascraping bulunur. Bir istekte bulunduğunuzda, API anahtarınızı x-api-key adıyla ve API anahtarınız olan bir istek başlığı olarak sağlamalısınız.

İstek gövdesine ek parametreler de iletmeniz gerekecektir. Bunlar url , device ve proxyCountry .

  • URL, meta verilerini kazımak istediğiniz web sayfasının URL'sini belirtir.
  • Cihaz , meta verileri kazırken siteyi ziyaret etmek için kullanılan cihazı belirtir. Cihaz seçenekleriniz mobil veya masaüstüdür.
  • Proxy ülkesi , veriler çıkarılmadan önce talebin hangi ülkeden yapılması gerektiğini belirtir. Bununla birlikte, proxy ülkesi premium bir özelliktir ve yalnızca Geekflare ücretli planları kapsamında kullanılabilir.

Parametrelerin gövdenin bir parçası olarak iletileceği göz önüne alındığında, GET istekleri meta veri içeremeyeceği için isteğin bir POST isteği olması gerekir.

CURL'de Geekflare Metascraping API'sini Kullanma

İlk gösteride, Metascraping API'sini istemek için komut satırından cURL yardımcı programını kullanacağız. CURL'yi kullanmak için önce onu yüklemeniz gerekir.

Bir Bash terminali kullanacağım. Bu, macOS ve Linux'ta varsayılan terminal olmalıdır. Windows için Git Bash'i kurmanız gerekecek.

CURL kurulduktan sonra istek yapmak için cURL komutunu kullanabiliriz. İstek parametrelerini belirtmek için komuta seçenekleri ileteceğiz: istek yöntemi, bitiş noktası, istek gövdesi ve istek başlıkları.

 curl -X POST \ https://api.geekflare.com/metascraping \ -d '{ "url": "https://tesla.com" }' \ -H 'Content-Type: application/json' \ -H 'x-api-key: <API_KEY>'

Not: İlk üç satırdan sonraki ters eğik çizgi, komut girişini birden çok satıra ayırmanıza olanak tanır.

Bu komut, HTTP yöntemini POST olarak ve uç noktayı Geekflare API meta kazıma uç noktası olarak belirtti.

İstek gövdesini, URL özelliği https://tesla.com olarak belirtilen bir JSON nesnesi olarak da gönderdik. Son olarak body içerik türünü belirten headerları JSON olarak ekledik ve x-api-key kullanarak API keyini sağladık.

Bu komutu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:

 {"timestamp":1669328564856,"apiStatus":"success","apiCode":200,"meta":{"url":"https://tesla.com","device":"desktop","test":{"id":"1fh2c30i05vmvxb99pdh6t6hze2x72jv"}},"data":{"author":null,"date":null,"description":"Tesla is accelerating the world's transition to sustainable energy with electric cars, solar and integrated renewable energy solutions for homes and businesses.","image":"https://tesla-cdn.thron.com/delivery/public/image/tesla/6139697c-9d6a-4579-837e-a9fc5df4a773/bvlatuR/std/1200x628/Model-3-Homepage-Social-LHD","logo":"https://tesla.com/themes/custom/tesla_frontend/assets/favicons/favicon-196x196.png","publisher":"Tesla","title":"Electric Cars, Solar & Clean Energy | Tesla","url":"https://www.tesla.com/","lang":"en"}}

Doğru çıktı budur.

Geekflare Metascraping API'sini JavaScript ile Kullanma

Bu proje için, API'den veri çekmek için bir NodeJS betiği oluşturacağız. Bu, NodeJS'nin kurulu olması gerektiği anlamına gelir. Projenin bağımlılıklarını yönetmek için Node için NPM'ye veya başka bir paket yöneticisine de ihtiyacınız olacak. Ayrıca komutları çalıştırmak için Bash terminalini kullanacağım.

API'yi JavaScript'te kullanmak için önce boş bir proje klasörü oluşturuyoruz ve onu bir terminalde açıyoruz.

 mkdir metascraping-js && cd metascraping-js

Bundan sonra, betiği yazacağımız dosyayı oluşturabiliriz:

 touch index.js

Ardından projeyi bir Düğüm projesi olarak başlatabiliriz:

 npm init -y

ESModule sözdizimini dosyamızın içinde kullanmak için package.json dosyasının kök dizinine “ type:module ” satırını şöyle görünecek şekilde ekleyin:

 { "name": "metascraping", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", }

Ardından, node-fetch paketini kuracağız. Bu paket, NodeJS'de tarayıcının fetch işlevine benzer bir fetch işlevi sağlar. Bu, istekte bulunmak için yerleşik http modülünü kullanmaktansa NodeJS'de HTTP istekleri yapmayı kolaylaştırır.

 npm install node-fetch

Paket doğru bir şekilde kurulduğunda, komut dosyasını düzenlemeye başlayabiliriz. Seçtiğiniz bir metin düzenleyiciyi kullanarak index.js dosyasını açın. Benim durumumda, terminal tabanlı nano metin editörünü kullanacağım.

 nano index.js

index.js dosyasını düzenlemeye, node-fetch modülünün varsayılan dışa aktarımı olan fetch işlevini içe aktararak başlıyoruz.

 import fetch from 'node-fetch'

Ardından, isteğimizin gövdesini tanımlayacağız. Bu, url özelliğine sahip bir JSON dizesi olacak. url özelliğinin değeri, meta verilerini almak istediğimiz web sayfasıdır.

 const body = JSON.stringify({ url: 'https://spacex.com' });

Ardından, sonunda çağırdığımızda fetch işlevine ileteceğimiz istek seçeneklerini tanımlayabiliriz.

 const options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': <YOUR API KEY here> }, body: body }

İstek yöntemimizi POST isteği olarak tanımladık. Ayrıca iki başlık tanımladık. Biri gövdenin JSON verilerini içerdiğini belirtirken diğeri API anahtarını sağlar.

<SİZİN API ANAHTARINIZ> yerine gerçek API anahtarınızı koyabilirsiniz. Uygulamada, API anahtarı dosyaya sabit olarak kodlanmamalı, çevresel değişkenler kullanılarak yüklenmelidir. Son olarak body özelliğini daha önce tanımladığımız body sabitinin değeri olarak belirledik.

Son olarak, fetch çağrısını yapıyoruz

 fetch('https://api.geekflare.com/metascraping', options) .then(response => response.json()) .then(json => console.log(json))

Burada API uç noktasını ve daha önce tanımladığımız seçenekleri geçerek fetch fonksiyonunu çağırdık. fetch bir söz döndürdüğü için, then kullanarak JSON yanıtlarını ayrıştıran bir geri arama ekledik.

Geri arama başka bir söz döndürür ve çözümlendiğinde, döndürülen nesneyi console.log() 'a gideceğiz.

Sonuç olarak, dosyamız böyle görünmelidir.

 import fetch from 'node-fetch' const body = JSON.stringify({ url: 'https://spacex.com' }); const options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': <YOUR API KEY here> }, body: body } fetch('https://api.geekflare.com/metascraping', options) .then(response => response.json()) .then(json => console.log(json))

Komut dosyasını çalıştırmak için düzenlemeleri kaydedin ve nano'yu veya kullandığınız metin düzenleyiciyi kapatın, ardından aşağıdaki komutu girin:

 node .

Aşağıdaki meta verileri almalısınız:

 { timestamp: 1669305079698, apiStatus: 'success', apiCode: 200, meta: { url: 'https://spacex.com', device: 'desktop', test: { id: '8m3srgqw06q2k8li5p6x70s8165d6e2f' } }, data: { author: null, date: null, description: 'SpaceX designs, manufactures and launches advanced rockets and spacecraft.', image: 'https://www.spacex.com/static/images/share.jpg', logo: 'https://spacex.com/static/images/favicon.ico', publisher: 'SpaceX', title: 'SpaceX', url: 'http://www.spacex.com/', lang: 'en' } }

Geekflare API'sini PHP ile Kullanma

Geekflare Metascraping API'sini kullanmak için öncelikle yerel makinenizde PHP ve Composer'ın kurulu olduğundan emin olun.

Başlamak için proje klasörünü oluşturun ve açın.

 mkdir metascraping-php && cd metascraping-php

Ardından, GuzzleHTTP'yi yükleyin. Guzzle, Geekflare API ile kullanabileceğiniz birçok PHP istemcisinden biridir.

 composer require guzzlehttp/guzzle

Guzzle yüklendikten sonra, şununla bir komut dosyası oluşturabiliriz:

 touch script.php

Ardından kodu yazmaya başlayabiliriz. Seçtiğiniz bir metin düzenleyiciyi kullanarak script.php dosyasını açın. Benim durumumda, terminal tabanlı bir metin editörü olan nano kullanacağım.

 nano script.php

Betiğin içine, kazan plakası PHP'yi ekliyoruz

 <?php // All code goes here ?>

Şimdi uzantıları yüklemek için Guzzle'dan İstek ve İstemci sınıflarını içe aktarın. Bu kod daha önce yazdığımız <?php ve ?> arasına yazılmalıdır.

 require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request;

Ardından, GuzzleHttp\Client sınıfını başlatarak bir istemci oluşturabiliriz.

 $client = new GuzzleHttp\Client();

Daha sonra istek için başlıklar tanımlayabiliriz. Bu özel istek için, biri gövdenin içerik türünün JSON olduğunu belirten ve diğeri API anahtarımızı içeren iki başlık sağlayacağız.

 $headers = [ 'x-api-key' => <YOUR API KEY HERE>, 'Content-Type' => 'application/json' ];

<YOUR API KEY HERE> Geekflare API kontrol panelindeki gerçek API anahtarınızla değiştirin.

Ardından gövdeyi tanımlayabiliriz. Bizim durumumuzda gövde, url özelliği "https://twitter.com" olarak ayarlanmış bir JSON dizesi olacak.

 $body = json_encode([ "url" => "https://twitter.com" ]);

Bir istek oluşturmak için, daha önce içe aktardığımız istek sınıfını, istek yöntemini, bitiş noktasını, başlıkları ve istek gövdesini geçirerek somutlaştırırız.

 $request = new Request('POST', 'https://api.geekflare.com/metascraping', $headers, $body);

Ardından, isteği göndermek için istemciyi kullanırız.

 $response = $client->sendAsync($request)->wait();

Ardından, isteğin gövdesini çıkarabilir ve konsola yazdırabiliriz.

 echo $response->getBody();

Kodu doğru bir şekilde kopyaladıysanız, script.php dosyası aşağıdaki gibi görünmelidir.

 <?php require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request; $client = new GuzzleHttp\Client(); $headers = [ 'x-api-key' => <YOUR API KEY>, 'Content-Type' => 'application/json' ]; $body = json_encode([ "url" => "https://twitter.com" ]); $request = new Request('POST', 'https://api.geekflare.com/metascraping', $headers, $body); $response = $client->sendAsync($request)->wait(); echo $response->getBody(); ?>

Komut dosyasını kaydedin, kapatın ve kullanarak çalıştırın

 php script.php

Aşağıdaki çıktıyı almalısınız:

 { "timestamp":1669322100912, "apiStatus":"success", "apiCode":200, "meta": { "url":"https://twitter.com", "device":"desktop", "test":{ "id":"wn1nj30r04bk0ijtpprwdqmtuirg9lze" } }, "data":{ "author":null, "date":null, "description":"The latest stories on Twitter - as told by Tweets.", "image":"https://abs.twimg.com/a/1602199131/img/moments/moments-card.jpg", "logo":"https://abs.twimg.com/responsive-web/client-web/icon-ios.b1fc7279.png", "publisher":"Twitter", "title":"Explore", "url":"https://twitter.com/explore", "lang":"en" } }

Son sözler

Bu kılavuz, Geekflare Metascraping API'sini kullanmanın farklı yollarından geçti.

Metascraping API, yalnızca URL'den daha fazla parametre sağlamanıza da olanak tanır. Böyle bir parametre, yalnızca Geekflare API premium planıyla erişilebilen proxy parametresidir. Ne olursa olsun, Geekflare API birçok kullanım için yeterince güçlü olmaya devam ediyor.

Daha fazla bilgi için Geekflare API'sinin resmi belgelerine bakın.