كيفية استخراج بيانات تعريف موقع الويب باستخدام Geekflare Meta Scraping API
نشرت: 2022-11-30بشكل عام ، يقوم تجريف الويب باستخراج البيانات من موقع ويب من HTML يتم إنتاجه عند تحميل صفحة ويب.
Metascraping هو استخراج البيانات الوصفية لصفحة الويب من العلامات الوصفية لصفحة الويب.
البيانات الوصفية لصفحة الويب هي معلومات حول الصفحة وليست محتوى الصفحة. على سبيل المثال ، قد تتضمن البيانات الوصفية اسم المؤلف والعنوان ووصف صفحة الويب.
يساعد المستخدمين ومحركات البحث على فهم موضوع الصفحة. يسمح استخراج البيانات الوصفية للمستخدم بجمع المعلومات حول صفحات الويب بسرعة في وقت أقل.
يمكن استخدام عدة طرق لإلغاء صفحات الويب لبياناتها الوصفية ، بما في ذلك الكشط يدويًا أو باستخدام مكتبة أو استخدام واجهة برمجة تطبيقات مثل Geekflare Metascraping API.
طرق عديدة لقتل قطة
للتخلص يدويًا ، يمكن للمرء فتح صفحة ويب باستخدام Chrome DevTools واستخراج البيانات الوصفية من علامة التبويب العناصر. ومع ذلك ، فإن هذا الدليل متكرر وممل عند التعامل مع صفحات متعددة. يمكننا أتمتة المهمة باستخدام طرق متعددة:
الطريقة الأولى هي كتابة الكود من البداية. في هذا النهج ، تقوم بإجراء طلب HTTP إلى موقع الويب الذي تريد استخراج البيانات الوصفية الخاصة به. بعد ذلك ، يمكنك تحليل استجابة HTML لاستخراج البيانات من العلامات الوصفية باستخدام التعبيرات العادية أو مطابقة الأنماط. ومع ذلك ، فإن هذا النهج يعيد اختراع العجلة حيث ستقضي وقتًا في إعادة كتابة الكود الحالي.
الطريقة الثانية هي استخدام مكتبة بأي لغة برمجة تفضلها. يسمح لك هذا بالتجريد حول تفاصيل التنفيذ ويبقي الأمور بسيطة. ومع ذلك ، إذا كانت لغة البرمجة التي تختارها لا تحتوي على مكتبة مناسبة أو أن وقت التشغيل المحدد الذي تستخدمه لا يدعم المكتبة ، فلا يمكنك استخدامها.
الطريقة الثالثة هي استخدام API مثل Geekflare Metascraping API. هذا الأسلوب مثالي لأنه يمنحك واجهة موحدة بغض النظر عن لغة البرمجة الخاصة بك. يمكن استخدامه بأي لغة طالما أنه يدعم تقديم طلبات HTTP.
ستوضح هذه المقالة كيفية استخدام Geekflare Metascraping API مع cURL و PHP و JavaScript (NodeJS).
لماذا يجب عليك استخدام واجهة برمجة تطبيقات Geekflare Metascraping؟
نظرًا لعيوب الأساليب الأخرى ، فإن مزايا استخدام Geekflare API هي:
- إنها لغة وبيئة وقت التشغيل حيادية.
- أنت تتجنب إعادة اختراع العجلة وتقضي وقتًا أقل في كتابة التعليمات البرمجية.
- يمكنك كشط العديد من مواقع الويب بكفاءة (في غضون ثوانٍ).
- إنه سهل الاستخدام بشكل لا يصدق.
- يمكنك استخدامه مجانًا.
الشروع في استخدام Geekflare API
لاستخدام Geekflare API ، ستحتاج إلى مفتاح API. للحصول على حساب ، انتقل إلى موقع Geekflare على الويب وأنشئ حسابًا مجانيًا. بعد إنشاء حسابك ، قم بتسجيل الدخول إلى لوحة التحكم. من لوحة القيادة ، يجب أن تكون قادرًا على رؤية مفتاح API الخاص بك.

نظرة عامة على واجهة برمجة تطبيقات Geekflare Metascraping
توجد نقطة نهاية واجهة برمجة التطبيقات على https://api.geekflare.com/metascraping
. عند تقديم طلب ، يجب عليك تقديم مفتاح API الخاص بك كرأس طلب بالاسم x-api-key
والقيمة هي مفتاح API الخاص بك.
ستحتاج أيضًا إلى تمرير معلمات إضافية في نص الطلب. هذه هي url
device
proxyCountry
.
- يحدد URL عنوان URL لصفحة الويب التي تريد كشط بياناتها الوصفية.
- يحدد الجهاز الجهاز المستخدم لزيارة الموقع عند كشط البيانات الوصفية. خياراتك للأجهزة المحمولة أو سطح المكتب.
- يحدد البلد الوكيل البلد الذي يجب تقديم الطلب منه قبل كشط البيانات. ومع ذلك ، تعد الدولة الوكيل ميزة متميزة ولا يمكن استخدامها إلا بموجب خطط Geekflare المدفوعة.
نظرًا لأنه سيتم تمرير المعلمات كجزء من النص ، يجب أن يكون الطلب طلب POST
نظرًا لأن طلبات GET
لا يمكن أن تحتوي على بيانات وصفية.
استخدام واجهة برمجة تطبيقات Geekflare Metascraping في cURL
في العرض التوضيحي الأول ، سنستخدم الأداة المساعدة cURL من سطر الأوامر لطلب واجهة برمجة تطبيقات Metascraping. لاستخدام cURL ، ستحتاج إلى تثبيته أولاً.
سأستخدم محطة Bash. يجب أن تكون هذه هي المحطة الافتراضية في نظامي macOS و Linux. بالنسبة لنظام التشغيل Windows ، سيتعين عليك تثبيت Git Bash.
بعد تثبيت cURL ، يمكننا استخدام الأمر cURL لإجراء الطلب. سنمرر خيارات إلى الأمر لتحديد معاملات الطلب: طريقة الطلب ونقطة النهاية وجسم الطلب ورؤوس الطلبات.
curl -X POST \ https://api.geekflare.com/metascraping \ -d '{ "url": "https://tesla.com" }' \ -H 'Content-Type: application/json' \ -H 'x-api-key: <API_KEY>'
ملاحظة: تسمح لك الشرطة المائلة للخلف بعد الأسطر الثلاثة الأولى بتقسيم إدخال الأمر إلى أسطر متعددة.
حدد هذا الأمر طريقة HTTP على أنها POST ونقطة النهاية كنقطة نهاية تجميع بيانات Geekflare API.
لقد أرسلنا أيضًا نص الطلب ككائن JSON مع خاصية URL المحددة كـ https://tesla.com. أخيرًا ، أضفنا الرؤوس التي تحدد نوع محتوى الجسم مثل JSON وقدمنا مفتاح API باستخدام رأس x-api-key
.
عندما نقوم بتشغيل هذا الأمر ، نحصل على المخرجات التالية:
{"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"}}
هذا هو الإخراج الصحيح.
استخدام واجهة برمجة تطبيقات Geekflare Metascraping مع JavaScript
بالنسبة لهذا المشروع ، سنقوم بإنشاء برنامج نصي NodeJS لجلب البيانات من واجهة برمجة التطبيقات. هذا يعني أنك ستحتاج إلى تثبيت NodeJS. ستحتاج أيضًا إلى NPM أو أي مدير حزم آخر لـ Node لإدارة تبعيات المشروع. سأستخدم أيضًا محطة Bash لتشغيل الأوامر.
لاستخدام API في JavaScript ، نقوم أولاً بإنشاء مجلد مشروع فارغ وفتحه في محطة طرفية.
mkdir metascraping-js && cd metascraping-js
بعد ذلك ، يمكننا إنشاء الملف حيث سنكتب البرنامج النصي:
touch index.js
ثم يمكننا إنشاء مثيل للمشروع كمشروع Node:
npm init -y
لاستخدام صيغة ESModule داخل ملفنا ، أضف السطر " type
" :
" module
" إلى جذر ملف package.json بحيث يبدو كالتالي:
{ "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", }
بعد ذلك ، سنقوم بتثبيت حزمة node-fetch
. توفر هذه الحزمة وظيفة fetch
في NodeJS تشبه وظيفة fetch
في المتصفح. هذا يجعل من السهل إنشاء طلبات HTTP في NodeJS بدلاً من استخدام وحدة http
المدمجة لتقديم الطلبات.
npm install node-fetch
عندما يتم تثبيت الحزمة بشكل صحيح ، يمكننا البدء في تحرير البرنامج النصي. افتح ملف index.js
باستخدام محرر نصوص من اختيارك. في حالتي ، سأستخدم محرر نصوص nano
قائم على المحطة الطرفية.
nano index.js
عند تحرير ملف index.js
، نبدأ باستيراد وظيفة fetch
، وهي التصدير الافتراضي لوحدة node-fetch
.

import fetch from 'node-fetch'
ثم سنحدد جسم طلبنا. ستكون سلسلة JSON مع خاصية url
. قيمة خاصية url
هي صفحة الويب التي نريد الحصول على بياناتها الوصفية.
const body = JSON.stringify({ url: 'https://spacex.com' });
بعد ذلك ، قد نحدد خيارات الطلب التي سنمررها إلى وظيفة fetch
عندما نسميها في النهاية.
const options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': <YOUR API KEY here> }, body: body }
لقد حددنا طريقة الطلب لدينا على أنها طلب POST
. لقد حددنا أيضًا رأسين. أحدهما يحدد أن الجسم يحتوي على بيانات JSON ، والآخر يوفر مفتاح API.
يمكنك استبدال <YOUR API KEY> بمفتاح API الفعلي. في الممارسة العملية ، يجب ألا يتم ترميز مفتاح API في الملف ولكن يجب تحميله باستخدام المتغيرات البيئية. أخيرًا ، حددنا خاصية الجسم على أنها قيمة ثابت الجسم الذي حددناه سابقًا.
أخيرًا ، نجري استدعاء fetch
fetch('https://api.geekflare.com/metascraping', options) .then(response => response.json()) .then(json => console.log(json))
هنا ، قمنا باستدعاء وظيفة الجلب ، مروراً بنقطة نهاية API والخيارات التي حددناها سابقًا. نظرًا لأن عملية fetch
تُعيد وعدًا ، فقد أرفقنا رد اتصال يحلل استجابات JSON باستخدام then
.
يُرجع رد النداء وعدًا آخر ، وعندما يتم حله ، سنذهب إلى console.log()
الكائن الذي تم إرجاعه.
في النهاية ، يجب أن يبدو ملفنا هكذا.
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))
لتشغيل البرنامج النصي ، احفظ التعديلات ، وأغلق nano أو محرر النصوص الذي تستخدمه ، ثم أدخل الأمر التالي:
node .
يجب أن تحصل على البيانات الوصفية التالية:
{ 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 مع PHP
لاستخدام Geekflare Metascraping API ، تأكد أولاً من تثبيت PHP و Composer على جهازك المحلي.
للبدء ، أنشئ مجلد المشروع وافتحه.
mkdir metascraping-php && cd metascraping-php
بعد ذلك ، قم بتثبيت GuzzleHTTP. Guzzle هو واحد من العديد من عملاء PHP الذين يمكنك استخدامهم مع Geekflare API.
composer require guzzlehttp/guzzle
بمجرد تثبيت Guzzle ، يمكننا إنشاء برنامج نصي باستخدام
touch script.php
ثم يمكننا البدء في كتابة الكود. باستخدام محرر نصوص من اختيارك ، افتح ملف script.php
. في حالتي ، nano
وهو محرر نصوص قائم على المحطة الطرفية.
nano script.php
داخل البرنامج النصي ، نقوم بإدخال لوحة المرجل PHP
<?php // All code goes here ?>
الآن لتحميل الامتدادات ، قم باستيراد فئات الطلب والعميل من Guzzle. يجب كتابة هذا الرمز بين <?php
و ?>
الذي كتبناه من قبل.
require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request;
بعد ذلك ، يمكننا إنشاء عميل عن طريق إنشاء مثيل GuzzleHttp\Client
$client = new GuzzleHttp\Client();
بعد ذلك ، يمكننا تحديد رؤوس للطلب. بالنسبة لهذا الطلب المحدد ، سنقدم رأسين ، أحدهما يحدد أن نوع محتوى الجسم هو JSON والآخر يحتوي على مفتاح API الخاص بنا.
$headers = [ 'x-api-key' => <YOUR API KEY HERE>, 'Content-Type' => 'application/json' ];
استبدل <YOUR API KEY HERE>
بمفتاح API الفعلي الخاص بك من لوحة معلومات Geekflare API.
ثم يمكننا تحديد الجسد. في حالتنا ، سيكون الجسم عبارة عن سلسلة JSON مع تعيين url
للخاصية على "https://twitter.com"
$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();
إذا قمت بنسخ الكود بشكل صحيح ، يجب أن يبدو ملف script.php
الشكل
<?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(); ?>
احفظ البرنامج النصي وأغلقه وقم بتشغيله باستخدام
php script.php
يجب أن تحصل على المخرجات التالية:
{ "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" } }
الكلمات الأخيرة
مر هذا الدليل بطرق مختلفة لاستهلاك Geekflare Metascraping API.
تتيح لك واجهة برمجة تطبيقات Metascraping أيضًا تقديم المزيد من المعلمات بخلاف عنوان URL فقط. أحد هذه المعلمات هو معلمة الوكيل ، والتي لا يمكن الوصول إليها إلا من خلال خطة Geekflare API المتميزة. بغض النظر ، تظل واجهة برمجة تطبيقات Geekflare قوية بما يكفي للعديد من الاستخدامات.
تحقق من الوثائق الرسمية لـ Geekflare API لمزيد من المعلومات.