วิธีแยกข้อมูลเมตาของเว็บไซต์โดยใช้ Geekflare Meta Scraping API
เผยแพร่แล้ว: 2022-11-30โดยทั่วไป การขูดเว็บเป็นการดึงข้อมูลจากเว็บไซต์จาก HTML ที่สร้างขึ้นเมื่อโหลดหน้าเว็บ
Metascraping กำลังแยกข้อมูลเมตาของหน้าเว็บออกจากเมตาแท็กของหน้าเว็บ
ข้อมูลเมตาของหน้าเว็บคือข้อมูลเกี่ยวกับหน้าเว็บ แต่ไม่ใช่เนื้อหาของหน้าเว็บ ตัวอย่างเช่น ข้อมูลเมตาอาจรวมถึงชื่อผู้เขียน ชื่อเรื่อง และคำอธิบายของหน้าเว็บ
ช่วยให้ผู้ใช้และเครื่องมือค้นหาเข้าใจว่าหน้านี้เกี่ยวกับอะไร การขูดข้อมูลเมตาช่วยให้ผู้ใช้รวบรวมข้อมูลเกี่ยวกับหน้าเว็บได้อย่างรวดเร็วโดยใช้เวลาน้อยลง
สามารถใช้หลายวิธีในการคัดลอกหน้าเว็บสำหรับข้อมูลเมตา รวมทั้งการคัดลอกด้วยตนเอง การใช้ไลบรารี หรือการใช้ API เช่น Geekflare Metascraping API
หลายวิธีในการฆ่าแมว
หากต้องการทิ้งด้วยตนเอง คุณสามารถเปิดหน้าเว็บโดยใช้ Chrome DevTools และดึงข้อมูลเมตาจากแท็บ Elements อย่างไรก็ตาม คู่มือนี้ซ้ำซากและน่าเบื่อเมื่อคุณจัดการกับหลายหน้า เราทำให้งานเป็นแบบอัตโนมัติได้หลายวิธี:
วิธีแรก คือเขียนโค้ดตั้งแต่เริ่มต้น ในแนวทางนี้ คุณจะสร้างคำขอ HTTP ไปยังเว็บไซต์ที่คุณต้องการแยกข้อมูลเมตา หลังจากนั้น คุณสามารถแยกวิเคราะห์ HTML การตอบสนองที่ดึงข้อมูลจากเมตาแท็กโดยใช้นิพจน์ทั่วไปหรือการจับคู่รูปแบบ อย่างไรก็ตาม วิธีการนี้เป็นการสร้างวงล้อขึ้นใหม่ เนื่องจากคุณจะใช้เวลาเขียนโค้ดที่มีอยู่ใหม่
วิธีที่สอง คือการใช้ไลบรารีในภาษาโปรแกรมที่คุณต้องการ สิ่งนี้ช่วยให้คุณสามารถสรุปรายละเอียดการใช้งานและทำให้สิ่งต่าง ๆ ง่ายขึ้น อย่างไรก็ตาม หากภาษาการเขียนโปรแกรมที่คุณเลือกไม่มีไลบรารีที่เหมาะสม หรือรันไทม์เฉพาะที่คุณใช้ไม่รองรับไลบรารี คุณจะใช้งานไม่ได้
วิธีที่สาม คือการใช้ API เช่น Geekflare Metascraping API แนวทางนี้เหมาะอย่างยิ่งเพราะให้อินเทอร์เฟซที่เหมือนกันโดยไม่คำนึงถึงภาษาโปรแกรมของคุณ สามารถใช้งานได้ในทุกภาษาตราบเท่าที่รองรับการร้องขอ HTTP
บทความนี้จะสาธิตวิธีใช้ Geekflare Metascraping API กับ cURL, PHP และ JavaScript (NodeJS)
ทำไมคุณจึงควรใช้ Geekflare Metascraping API
เนื่องจากข้อเสียของวิธีอื่นๆ ข้อดีของการใช้ Geekflare API คือ:
- มันเป็นภาษาและสภาพแวดล้อมรันไทม์ที่ไม่เชื่อเรื่องพระเจ้า
- คุณหลีกเลี่ยงการประดิษฐ์วงล้อใหม่และใช้เวลาน้อยลงในการเขียนโค้ด
- คุณสามารถขูดหลาย ๆ เว็บไซต์ได้อย่างมีประสิทธิภาพ (ในเวลาไม่กี่วินาที)
- มันใช้งานง่ายอย่างไม่น่าเชื่อ
- คุณสามารถใช้งานได้ฟรี
เริ่มต้นใช้งาน Geekflare API
ในการใช้ Geekflare API คุณจะต้องมีรหัส API ในการรับหนึ่งให้ไปที่เว็บไซต์ Geekflare และสร้างบัญชีฟรี หลังจากสร้างบัญชีของคุณแล้ว ให้ลงชื่อเข้าใช้แดชบอร์ด จากแดชบอร์ด คุณควรจะเห็นคีย์ API ของคุณ

ภาพรวม API ของ Geekflare Metascraping
ตำแหน่งข้อมูล API อยู่ที่ https://api.geekflare.com/metascraping
เมื่อคุณส่งคำขอ คุณควรระบุคีย์ API ของคุณเป็นส่วนหัวของคำขอด้วยชื่อ x-api-key
และค่าที่เป็นคีย์ API ของคุณ
คุณจะต้องส่งพารามิเตอร์เพิ่มเติมในเนื้อหาคำขอด้วย เหล่านี้คือ url
, device
, และ proxyCountry
- URL ระบุ URL ของหน้าเว็บที่คุณต้องการคัดลอกข้อมูลเมตา
- อุปกรณ์ ระบุอุปกรณ์ที่ใช้ในการเยี่ยมชมไซต์เมื่อคัดลอกข้อมูลเมตา ตัวเลือกของคุณสำหรับอุปกรณ์คือมือถือหรือเดสก์ท็อป
- ประเทศผู้รับ มอบฉันทะ ระบุประเทศที่ส่งคำขอก่อนที่ข้อมูลจะถูกคัดลอก อย่างไรก็ตาม ประเทศพร็อกซีเป็นฟีเจอร์ระดับพรีเมียมและสามารถใช้ได้ภายใต้แผนชำระเงินของ Geekflare เท่านั้น
เนื่องจากพารามิเตอร์จะถูกส่งผ่านเป็นส่วนหนึ่งของเนื้อหา คำขอต้องเป็นคำขอ POST
เนื่องจากคำขอ GET
ไม่สามารถมีข้อมูลเมตาได้
การใช้ Geekflare Metascraping API ใน cURL
ในการสาธิตครั้งแรก เราจะใช้ยูทิลิตี้ cURL จากบรรทัดคำสั่งเพื่อขอ Metascraping API หากต้องการใช้ cURL คุณจะต้องติดตั้งก่อน
ฉันจะใช้ Bash terminal นี่ควรเป็นเทอร์มินัลเริ่มต้นบน 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 meta-scraping
นอกจากนี้ เรายังส่งเนื้อหาคำขอเป็นวัตถุ 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 API กับ JavaScript
สำหรับโครงการนี้ เราจะสร้างสคริปต์ NodeJS เพื่อดึงข้อมูลจาก API ซึ่งหมายความว่าคุณจะต้องติดตั้ง NodeJS คุณจะต้องมี NPM หรือตัวจัดการแพ็คเกจอื่นๆ สำหรับโหนดเพื่อจัดการการพึ่งพาของโครงการ ฉันจะใช้เทอร์มินัล Bash เพื่อเรียกใช้คำสั่งด้วย
หากต้องการใช้ API ใน JavaScript ก่อนอื่นเราต้องสร้างโฟลเดอร์โครงการเปล่าและเปิดในเทอร์มินัล
mkdir metascraping-js && cd metascraping-js
หลังจากนี้ เราสามารถสร้างไฟล์ที่เราจะเขียนสคริปต์:
touch index.js
จากนั้นเราสามารถยกตัวอย่างโครงการเป็นโครงการโหนด:
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
คุณสามารถแทนที่ <คีย์ API ของคุณ> ด้วยคีย์ 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
ภายในสคริปต์ เราใส่ Boiler-plate 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 API ช่วยให้คุณระบุพารามิเตอร์ได้มากกว่า URL เดียว พารามิเตอร์หนึ่งดังกล่าวคือพารามิเตอร์พร็อกซี ซึ่งสามารถเข้าถึงได้ด้วยแผนพรีเมียมของ Geekflare API เท่านั้น โดยไม่คำนึงว่า Geekflare API ยังคงมีประสิทธิภาพเพียงพอสำหรับการใช้งานจำนวนมาก
ตรวจสอบเอกสารอย่างเป็นทางการของ Geekflare API สำหรับข้อมูลเพิ่มเติม