Cách trích xuất siêu dữ liệu trang web bằng techpoe.com Meta Scraping API

Spread the love

Nói chung, quét web đang trích xuất dữ liệu từ một trang web từ HTML được tạo khi trang web được tải.

Metascraping đang trích xuất siêu dữ liệu của trang web từ các thẻ meta của trang web.

Siêu dữ liệu của trang web là thông tin về trang chứ không phải nội dung của trang. Ví dụ: siêu dữ liệu có thể bao gồm tên tác giả, tiêu đề và mô tả của trang web.

Nó giúp người dùng và công cụ tìm kiếm hiểu nội dung của trang. Quét siêu dữ liệu cho phép người dùng nhanh chóng thu thập thông tin về các trang web trong thời gian ngắn hơn.

Một số phương pháp có thể được sử dụng để loại bỏ các trang web để lấy siêu dữ liệu của chúng, bao gồm loại bỏ thủ công, sử dụng thư viện hoặc sử dụng API chẳng hạn như API siêu dữ liệu techpoe.com.

Nhiều cách để giết một con mèo

Để loại bỏ theo cách thủ công, người ta có thể mở một trang web bằng Chrome DevTools và trích xuất siêu dữ liệu từ tab Thành phần. Tuy nhiên, hướng dẫn này lặp đi lặp lại và tẻ nhạt khi bạn đang xử lý nhiều trang. Chúng tôi có thể tự động hóa tác vụ bằng nhiều cách tiếp cận:

Cách tiếp cận đầu tiên là viết mã từ đầu. Theo phương pháp này, bạn thực hiện một yêu cầu HTTP tới trang web có siêu dữ liệu mà bạn muốn trích xuất. Sau đó, bạn có thể phân tích cú pháp HTML phản hồi trích xuất dữ liệu từ thẻ meta bằng cách sử dụng cụm từ thông dụng hoặc khớp mẫu. Tuy nhiên, cách tiếp cận này đang phát minh lại bánh xe vì bạn sẽ dành thời gian viết lại mã hiện có.

Cách tiếp cận thứ hai là sử dụng thư viện bằng bất kỳ ngôn ngữ lập trình nào bạn thích. Điều này cho phép bạn trừu tượng hóa chi tiết triển khai và giữ mọi thứ đơn giản. Tuy nhiên, nếu ngôn ngữ lập trình bạn chọn không có thư viện phù hợp hoặc thời gian chạy cụ thể mà bạn đang sử dụng không hỗ trợ thư viện, thì bạn không thể sử dụng nó.

Cách tiếp cận thứ ba là sử dụng một API như techpoe.com Metascraping API. Cách tiếp cận này là lý tưởng vì nó cung cấp cho bạn một giao diện thống nhất bất kể ngôn ngữ lập trình của bạn là gì. Nó có thể sử dụng được bằng bất kỳ ngôn ngữ nào miễn là nó hỗ trợ thực hiện các yêu cầu HTTP.

Bài viết này sẽ trình bày cách sử dụng techpoe.com Metascraping API với cURL, PHP và JavaScript (NodeJS).

Do những nhược điểm của các phương pháp khác, ưu điểm của việc sử dụng API techpoe.com là:

  • Đó là ngôn ngữ và môi trường thời gian chạy bất khả tri.
  • Bạn tránh phát minh lại bánh xe và dành ít thời gian hơn để viết mã.
  • Bạn có thể cạo nhiều trang web một cách hiệu quả (chỉ trong vài giây).
  • Nó cực kỳ dễ sử dụng.
  • Bạn có thể sử dụng nó miễn phí.

Bắt đầu sử dụng API techpoe.com

Để sử dụng API techpoe.com, bạn sẽ cần một khóa API. Để có được một cái, hãy truy cập Trang web techpoe.com và tạo một tài khoản miễn phí. Sau khi tạo tài khoản, hãy đăng nhập vào bảng điều khiển. Từ bảng điều khiển, bạn sẽ có thể thấy khóa API của mình.

  Tôi có thể xem Netflix Nhật Bản ở Mỹ không?

Điểm cuối API được đặt tại https://api.techpoe.com.com/metascraping. Khi đưa ra yêu cầu, bạn nên cung cấp khóa API dưới dạng tiêu đề yêu cầu có tên x-api-key và giá trị là khóa API của bạn.

Bạn cũng sẽ cần chuyển các tham số bổ sung trong phần thân yêu cầu. Đây là url, thiết bị và proxyCountry.

  • URL chỉ định URL của trang web có siêu dữ liệu mà bạn muốn cạo.
  • Thiết bị chỉ định thiết bị được sử dụng để truy cập trang web khi cạo siêu dữ liệu. Tùy chọn của bạn cho thiết bị là thiết bị di động hoặc máy tính để bàn.
  • Quốc gia được ủy quyền chỉ định quốc gia mà từ đó yêu cầu sẽ được thực hiện trước khi dữ liệu được loại bỏ. Tuy nhiên, quốc gia proxy là một tính năng cao cấp và chỉ có thể được sử dụng trong các gói trả phí techpoe.com.

Cho rằng các tham số sẽ được chuyển như một phần của nội dung, yêu cầu phải là yêu cầu POST vì yêu cầu GET không thể chứa siêu dữ liệu.

Trong phần trình diễn đầu tiên, chúng tôi sẽ sử dụng tiện ích cURL từ dòng lệnh để yêu cầu API Metascraping. Để sử dụng cURL, trước tiên bạn cần cài đặt nó.

Tôi sẽ sử dụng thiết bị đầu cuối Bash. Đây phải là thiết bị đầu cuối mặc định trên macOS và Linux. Đối với Windows, bạn sẽ phải cài đặt Git Bash.

Sau khi cURL được cài đặt, chúng ta có thể sử dụng lệnh cURL để thực hiện yêu cầu. Chúng tôi sẽ chuyển các tùy chọn cho lệnh để chỉ định các tham số yêu cầu: phương thức yêu cầu, điểm cuối, nội dung yêu cầu và tiêu đề yêu cầu.

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

Lưu ý: Dấu gạch chéo ngược sau ba dòng đầu tiên cho phép bạn chia đầu vào lệnh thành nhiều dòng.

Lệnh này đã chỉ định phương thức HTTP là POST và điểm cuối là điểm cuối quét siêu dữ liệu API techpoe.com.

Chúng tôi cũng đã gửi nội dung yêu cầu dưới dạng đối tượng JSON có thuộc tính URL được chỉ định là https://tesla.com. Cuối cùng, chúng tôi đã thêm các tiêu đề chỉ định loại nội dung cơ thể là JSON và cung cấp khóa API bằng tiêu đề khóa x-api.

Khi chúng tôi chạy lệnh này, chúng tôi nhận được đầu ra sau:

{"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"}}

Đó là đầu ra chính xác.

Đối với dự án này, chúng tôi sẽ tạo tập lệnh NodeJS để tìm nạp dữ liệu từ API. Điều này có nghĩa là bạn sẽ cần cài đặt NodeJS. Bạn cũng sẽ cần NPM hoặc bất kỳ trình quản lý gói nào khác cho Node để quản lý các phần phụ thuộc của dự án. Tôi cũng sẽ sử dụng thiết bị đầu cuối Bash để chạy các lệnh.

Để sử dụng API trong JavaScript, trước tiên chúng tôi tạo một thư mục dự án trống và mở nó trong một thiết bị đầu cuối.

mkdir metascraping-js && cd metascraping-js

Sau này, chúng ta có thể tạo tệp mà chúng ta sẽ viết tập lệnh:

touch index.js

Sau đó, chúng ta có thể khởi tạo dự án dưới dạng dự án Node:

npm init -y

Để sử dụng cú pháp ESModule bên trong tệp của chúng tôi, hãy thêm dòng “type“ : “module” vào thư mục gốc của tệp pack.json sao cho nó trông giống như sau:

{
  "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",
}

Tiếp theo, chúng tôi sẽ cài đặt gói tìm nạp nút. Gói này cung cấp chức năng tìm nạp trong NodeJS tương tự như chức năng tìm nạp của trình duyệt. Điều này giúp tạo các yêu cầu HTTP trong NodeJS dễ dàng hơn so với việc sử dụng mô-đun http tích hợp để thực hiện các yêu cầu.

npm install node-fetch

Khi gói được cài đặt chính xác, chúng tôi có thể bắt đầu chỉnh sửa tập lệnh. Mở tệp index.js bằng trình soạn thảo văn bản bạn chọn. Trong trường hợp của tôi, tôi sẽ sử dụng trình soạn thảo văn bản nano dựa trên thiết bị đầu cuối.

nano index.js

Chỉnh sửa tệp index.js, chúng tôi bắt đầu bằng cách nhập chức năng tìm nạp, đây là chức năng xuất mặc định của mô-đun tìm nạp nút.

import fetch from 'node-fetch'

Sau đó, chúng tôi sẽ xác định phần thân của yêu cầu của chúng tôi. Đây sẽ là một chuỗi JSON có thuộc tính url. Giá trị của thuộc tính url là trang web có siêu dữ liệu mà chúng tôi muốn nhận.

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

Tiếp theo, chúng tôi có thể xác định các tùy chọn yêu cầu mà chúng tôi sẽ chuyển đến chức năng tìm nạp khi cuối cùng chúng tôi gọi nó.

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

Chúng tôi đã xác định phương thức yêu cầu của mình là một yêu cầu POST. Chúng tôi cũng đã xác định hai tiêu đề. Một chỉ định rằng phần thân chứa dữ liệu JSON và phần còn lại cung cấp khóa API.

  Cách sử dụng ứng dụng McDonald's

Bạn có thể thay thế bằng khóa API thực tế của mình. Trên thực tế, khóa API không nên được mã hóa cứng vào tệp mà phải được tải bằng các biến môi trường. Cuối cùng, chúng tôi đã chỉ định thuộc tính cơ thể là giá trị của hằng số cơ thể mà chúng tôi đã xác định trước đó.

Cuối cùng, chúng tôi thực hiện cuộc gọi để tìm nạp

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

Ở đây, chúng tôi đã gọi hàm tìm nạp, chuyển vào điểm cuối API và các tùy chọn mà chúng tôi đã xác định trước đó. Vì tìm nạp trả về một lời hứa, nên chúng tôi đã đính kèm một lệnh gọi lại để phân tích các phản hồi JSON bằng cách sử dụng then.

Cuộc gọi lại trả về một lời hứa khác và khi nó giải quyết xong, chúng ta sẽ chuyển đến đối tượng được trả về console.log().

Vì vậy, cuối cùng, tập tin của chúng tôi sẽ trông như thế này.

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.techpoe.com.com/metascraping', options)
    .then(response => response.json())
    .then(json => console.log(json))

Để chạy tập lệnh, hãy lưu các chỉnh sửa và đóng nano hoặc trình soạn thảo văn bản bạn đang sử dụng, sau đó nhập lệnh sau:

node .

Bạn sẽ nhận được siêu dữ liệu sau:

{
  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'
  }
}

Sử dụng API techpoe.com với PHP

Để sử dụng API Metascraping techpoe.com, trước tiên hãy đảm bảo rằng bạn đã cài đặt PHP và Trình soạn thảo trên máy cục bộ của mình.

  Khắc phục lời mời trò chơi Xbox One không hoạt động

Để bắt đầu, hãy tạo và mở thư mục dự án.

mkdir metascraping-php && cd metascraping-php

Tiếp theo, cài đặt GuzzleHTTP. Guzzle là một trong nhiều ứng dụng khách PHP mà bạn có thể sử dụng với API techpoe.com.

composer require guzzlehttp/guzzle

Sau khi Guzzle được cài đặt, chúng ta có thể tạo một tập lệnh với

touch script.php

Sau đó, chúng ta có thể bắt đầu viết mã. Sử dụng trình soạn thảo văn bản bạn chọn, mở tệp script.php. Trong trường hợp của tôi, tôi sẽ sử dụng nano, một trình soạn thảo văn bản dựa trên thiết bị đầu cuối.

nano script.php

Bên trong tập lệnh, chúng tôi chèn bản viết tắt PHP

<?php
    // All code goes here
?>

Bây giờ để tải các tiện ích mở rộng, hãy nhập các lớp Yêu cầu và Máy khách từ Guzzle. Đoạn mã này phải được viết giữa mà chúng ta đã viết trước đây.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Tiếp theo, chúng ta có thể tạo một ứng dụng khách bằng cách khởi tạo lớp GuzzleHttpClient

$client = new GuzzleHttpClient();

Sau đó, chúng ta có thể xác định các tiêu đề cho yêu cầu. Đối với yêu cầu cụ thể này, chúng tôi sẽ cung cấp hai tiêu đề, một tiêu đề xác định loại nội dung của nội dung là JSON và tiêu đề còn lại chứa khóa API của chúng tôi.

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

Thay thế bằng khóa API thực tế của bạn từ bảng điều khiển API techpoe.com.

Sau đó, chúng ta có thể xác định cơ thể. Trong trường hợp của chúng tôi, phần thân sẽ là một chuỗi JSON với url thuộc tính được đặt thành “https://twitter.com”

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

Để tạo một yêu cầu, chúng tôi khởi tạo lớp yêu cầu mà chúng tôi đã nhập trước đó, chuyển vào phương thức yêu cầu, điểm cuối, tiêu đề và nội dung yêu cầu.

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

Tiếp theo, chúng tôi sử dụng ứng dụng khách để gửi yêu cầu.

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

Sau đó, chúng ta có thể trích xuất phần thân của yêu cầu và in nó ra bàn điều khiển

echo $response->getBody();

Nếu bạn đã sao chép mã chính xác, tệp script.php sẽ trông như thế này

<?php
    require_once('vendor/autoload.php');

	use GuzzleHttpClient;
	use GuzzleHttpPsr7Request;

	$client = new GuzzleHttpClient();

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

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

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

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

	echo $response->getBody();
?>

Lưu tập lệnh, đóng tập lệnh và chạy tập lệnh bằng cách sử dụng

php script.php

Bạn sẽ nhận được đầu ra sau:

{
    "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"
     }
}

Từ cuối cùng

Hướng dẫn này đã giới thiệu các cách khác nhau để sử dụng API Metascraping techpoe.com.

Metascraping API cũng cho phép bạn cung cấp nhiều tham số hơn là chỉ một URL. Một tham số như vậy là tham số proxy, chỉ có thể được truy cập bằng gói cao cấp API techpoe.com. Bất chấp điều đó, API techpoe.com vẫn đủ mạnh cho nhiều mục đích sử dụng.

Hãy xem tài liệu chính thức của techpoe.com API để biết thêm thông tin.

x